Приведенная ниже информация может быть излишней, если вы пытаетесь понять сообщение об ошибке. Начните с чтения ответа от @ user707650.
Используя MatPlotLib, мне нужен был универсальный сценарий, который на основе моих данных создавал бы следующее.
Окно, содержащее подзаголовки a, расположенные таким образом, чтобы на столбец приходилось b подзаголовков. Я хочу иметь возможность изменять значения a и b.
Если у меня есть данные для подзаголовков 2a, мне нужно 2 окна, каждое с ранее описанными подзаголовками "a, расположенными в соответствии с b частями на столбец ".
Данные x и y, которые я рисую, представляют собой числа с плавающей запятой, хранящиеся в np.arrays и структурированы следующим образом:
Данные x всегда одинаковы для всех графиков и имеют длину 5.
'x_vector': [0.000, 0.005, 0.010, 0.020, 0.030, 0.040]
Данные y всех графиков хранятся в y_vector, где данные для первого графика хранятся с индексами от 0 до 5. Данные для второго графика хранятся с индексами с 6 по 11. Третий график получает 12-18, четвертый 19-24 и так далее.
Всего для этого набора данных у меня есть 91 график (т.е. 91 * 6 = 546 значений, хранящихся в y_vector).
Попытка:
import matplotlib.pyplot as plt
# Options:
plots_tot = 14 # Total number of plots. In reality there is going to be 7*13 = 91 plots.
location_of_ydata = 6 # The values for the n:th plot can be found in the y_vector at index 'n*6' through 'n*6 + 6'.
plots_window = 7 # Total number of plots per window.
rows = 2 # Number of rows, i.e. number of subplots per column.
# Calculating number of columns:
prim_cols = plots_window / rows
extra_cols = 0
if plots_window % rows > 0:
extra_cols = 1
cols = prim_cols + extra_cols
print 'cols:', cols
print 'rows:', rows
# Plotting:
n=0
x=0
fig, ax = plt.subplots(rows, cols)
while x <= plots_tot:
ax[x].plot(x_vector, y_vector[n:(n+location_of_ydata)], 'ro')
if x % plots_window == plots_window - 1:
plt.show() # New window for every 7 plots.
n = n+location_of_ydata
x = x+1
Я получаю следующую ошибку:
cols: 4
rows: 2
Traceback (most recent call last):
File "Script.py", line 222, in <module>
ax[x].plot(x_vector, y_vector[n:(n+location_of_ydata)], 'ro')
AttributeError: 'numpy.ndarray' object has no attribute 'plot'