Установка значений оси Y независимо от значений y в matplotlib - PullRequest
0 голосов
/ 28 октября 2019

Я использую цикл while для отображения нескольких выходов на одном входе. Как я могу установить свои отметки по оси Y, чтобы получать равномерно расположенные отметки со значениями от 0 до 10? Кажется, что тики принимают выходные данные как значения в каком-то странном порядке, я не понимаю. Когда я передаю список y-тикам, он просто дает мне подмножество тиков, которые он показывает в настоящее время, а не тики, основанные на списке, который я передаю. Вот мой код:

output20 = [0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
outputs = [output1, output2, output3, output4, output5, output6, output7, output8, output9, output10, output11, output12, output13, output14, output15, output16, output17, output18, output19, output20]

import matplotlib.ticker as ticker

plt.figure(figsize = (16, 10))

i = 0
while i < 20:
    if i < 19:
        plt.plot(inputs, outputs[i], label = 'V_pgm = %s'%df.iloc[i+2]['Unnamed: 3'], marker = 'o', linestyle = '') #label = 'V_pgm = %s'%df.iloc[i+2]['Unnamed: 3']
    if i == 19:
        plt.plot(inputs, outputs[i], label = '__nolegend__', marker = '', linestyle = '')
    i+= 1


plt.xlabel("Input Voltage (V)")
plt.ylabel("Load Voltage (V)")

plt.title("Load Voltage (V)")
plt.axis([8, 24, -1, 100])
plt.yticks()
plt.legend()
plt.show()


Вывод

Вот как это выглядит, когда я передаю значения в тики y:

output20 = [0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
outputs = [output1, output2, output3, output4, output5, output6, output7, output8, output9, output10, output11, output12, output13, output14, output15, output16, output17, output18, output19, output20]

import matplotlib.ticker as ticker

plt.figure(figsize = (16, 10))

i = 0
while i < 20:
    if i < 19:
        plt.plot(inputs, outputs[i], label = 'V_pgm = %s'%df.iloc[i+2]['Unnamed: 3'], marker = 'o', linestyle = '') #label = 'V_pgm = %s'%df.iloc[i+2]['Unnamed: 3']
    if i == 19:
        plt.plot(inputs, outputs[i], label = '__nolegend__', marker = '', linestyle = '')
    i+= 1


plt.xlabel("Input Voltage (V)")
plt.ylabel("Load Voltage (V)")

plt.title("Load Voltage (V)")
plt.axis([8, 24, -1, 100])
plt.yticks([2, 10])
plt.legend()
plt.show()

Выходные данные

Я хочу, чтобы ось Y была беспорядочной и могла устанавливать количество тиков и их значения.

1 Ответ

0 голосов
/ 28 октября 2019

plt.yticks принимает определенные аргументы, которые позволяют вам разместить его в соответствии с тем, как вы хотите, чтобы он был расположен. Поскольку у меня нет ваших выходных и входных данных, я сделал простой пример ниже и покажу, как параметры ytick соответствуют изменениям на графиках.

import matplotlib.pyplot as plt
import numpy as np

indices = [1,2,3,4,5,6,7,8,9]
array = [35,27,38,49,95,65,67,32,45]

plt.figure(figsize = (5,5))

plt.plot(array,indices)

# None                                                                                                                                                   
plt.title("No yticks")

# plt.yticks()                                                                                                                                           
# plt.yticks(np.arange(0,5,step=0.2))                                                                                                                    
# plt.yticks(np.arange(0,len(indices),step=0.5))                                                                                                         
plt.show()

enter image description here

import matplotlib.pyplot as plt
import numpy as np

indices = [1,2,3,4,5,6,7,8,9]
array = [35,27,38,49,95,65,67,32,45]

plt.figure(figsize = (5,5))

plt.plot(array,indices)

# None                                                                                                                                                   
#plt.title("No yticks")                                                                                                                                  

plt.yticks()
plt.title("yticks, no params")

# plt.yticks(np.arange(0,5,step=0.2))                                                                                                                    
# plt.yticks(np.arange(0,len(indices),step=0.5))                                                                                                         
plt.show()

enter image description here

УВЕДОМЛЕНИЕ, ЧТО ПЕРВЫЙ ДВА - ТО ЖЕ ВРЕМЯ

import matplotlib.pyplot as plt
import numpy as np

indices = [1,2,3,4,5,6,7,8,9]
array = [35,27,38,49,95,65,67,32,45]

plt.figure(figsize = (5,5))

plt.plot(array,indices)

# None                                                                                                                                                   
#plt.title("No yticks")                                                                                                                                  

#plt.yticks()                                                                                                                                            
#plt.title("yticks, no params")                                                                                                                          

plt.yticks(np.arange(0,5,step=0.2))
plt.title("yticks params: less than indice length")

# plt.yticks(np.arange(0,len(indices),step=0.5))                                                                                                         
plt.show()

enter image description here

import matplotlib.pyplot as plt
import numpy as np

indices = [1,2,3,4,5,6,7,8,9]
array = [35,27,38,49,95,65,67,32,45]

plt.figure(figsize = (5,5))

plt.plot(array,indices)

# None                                                                                                                                                   
#plt.title("No yticks")                                                                                                                                  

#plt.yticks()                                                                                                                                            
#plt.title("yticks, no params")                                                                                                                          

#plt.yticks(np.arange(0,5,step=0.2))                                                                                                                     
#plt.title("yticks params: less than indice length")                                                                                                     

plt.yticks(np.arange(0,len(indices),step=0.5))
plt.title("yticks params: equal to indice length")

plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...