Я хочу построить некоторые данные из CSV-файла, используя dataframe.
Мой код в настоящее время отображает 266 = 14 * 19 отдельных участков. В настоящее время он закодирован так, чтобы отображать все 266 подзаговоров на одном экране, и каждый из них маленький и трудный для чтения.
Я пытался использовать сюжет 1x1
#fig, cx=plt.subplots(1,1, sharex=False, sharey=False, figsize=(18,12))
Основной код:
fig, cx=plt.subplots(14,19, sharex=False, sharey=False, figsize=(18,12))
#fig, cx=plt.subplots(1,1, sharex=False, sharey=False, figsize=(18,12))
plt.subplots_adjust(hspace=0.5)
cx = cx.ravel()
for i in range(0,len(Bond)):
cx[i].plot(VelLog[Bond[i]], color='b')
cx[i].set_xlabel('Time (ms)')
cx[i].set_ylabel('Velocity (m/s)')
cx[i].set_ylim(-250,150)
cx[i].set_title(Bond[i])
plt.savefig('Velocity.png', dpi=120)
plt.show()
##################################
Error message when I un-comment Line 1
cx[i].plot(VelLog[Bond[i]], color='b')
IndexError: index 209 is out of bounds for axis 0 with size 209
Как я могу отображать на экране только несколько подзаголовков, чтобы повысить читабельность?
Как 5х5 + 5х5 + 5х5 + 5х5 + 5х5, + 5х5 + 5х5 + 5х5 + 5х5 + 5х5 + 4х4 = 266
11 разных экранов.
Есть ли способ добавить фильтр диаграммы в качестве альтернативы?
Вот мой обновленный код с вашими предложениями. Теперь он создает 11 фигур. Мне удалось построить все 266 графиков, но все они выглядят одинаково.
Nrows, Ncols = 14, 19
Nplots = Nrows*Ncols
nrows, ncols = 5, 5
naxes = nrows*ncols
nfigures = Nplots//naxes
count = 0
figures = []
for fignum in range(nfigures+1):
fig, axes = plt.subplots(nrows, ncols, sharex=False, sharey=False, figsize=(18,12))
plt.subplots_adjust(hspace=0.5)
#axes = axes.ravel()
figures.append(fig)
axes = axes.flat
for ax in axes:
#print(count)
if count<Nplots:
for i in range(0,len(Bond)):
cvs_row, cvs_col = divmod(count, Ncols)
cvs_row, cvs_col = cvs_row+1, cvs_col+1
ax.plot(VelLog[Bond[i]], color='b', label='%d,%d'%(cvs_row, cvs_col))
ax.set_xlabel('Time (ms)')
ax.set_ylabel('Velocity (m/s)')
ax.set_ylim(-250,150)
ax.set_title(Bond[i])
count = count+1
plt.savefig('Velocity.png', dpi=120)
plt.show()
Вот результат для одной фигуры введите описание изображения здесь
Здесь я рисую одну и ту же функцию 14 * 19 раз, но вы можете получить представление
У нас есть две проблемы: отслеживать то, что мы замышляем, и откладывая фактическое построение графика, пока мы не закончим со всеми из них.
Первая проблема решается здесь с использованием глобального счетчика и divmod
встроенный, второй хранит все цифры в списке и вызывает
plt.show()
только в самом конце этапа прорисовки.
Чтобы показать, что я имею в виду под «отслеживанием», я добавил метку и легенда к каждому отдельному сюжету.
Чтобы все было разумно, я не проверяю, пуста ли последняя цифра. а также я не проверяю, пусты ли некоторые участки последних цифр, но помните, что вы можете удалить некоторые подсюжеты из рисунка, если вы хочу чистую последнюю цифру.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, np.pi, 31)
y = np.sin(x)
Nrows, Ncols = 14, 19
Nplots = Nrows*Ncols
nrows, ncols = 5, 5
naxes = nrows*ncols
nfigures = Nplots//naxes
count = 0
figures = []
for fignum in range(nfigures+1):
fig, axes = plt.subplots(nrows, ncols)
figures.append(fig)
axes = axes.flat
for ax in axes:
print(count)
if count<Nplots:
cvs_row, cvs_col = divmod(count, Ncols)
cvs_row, cvs_col = cvs_row+1, cvs_col+1
ax.plot(x, y, label='%d,%d'%(cvs_row, cvs_col))
ax.legend()
count = count+1
plt.show()
Здесь я показываю только последний рисунок, чтобы показать, что я имею в виду под «пустым подсюжеты"...
Почему все графики выглядят одинаково?
¿ Вы прочитали первое утверждение моего ответа, то есть «Здесь я рисую функцию такой же 14 × 19 раз, но вы можете получить представление»?
Перефразируя, я полагал, что добавление Vel[Bond[i]] построит все 266 графиков.
Догадаться. У меня было «i» вместо «count». Спасибо еще раз.
Вы пытались нанести их на разные объекты фигуры?