многострочное разрешение для каждого подзадача - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть фрейм данных, df, который я намереваюсь построить линейную диаграмму, где мы разрезаем окно на несколько субплощадок, по одному на группу. Затем каждая группа содержит каждый столбец, который представлен жирной линией, отображаемой на ее уникальном подзаговоре, в то время как другие столбцы отображаются незаметно, как на рисунке ниже, поэтому это не приведет к сюжету спагетти. Размерность данных составляет (29,32)

Index        DateTimestamp              0.0      5.0     34.0 ... 31.0 
  0        2017-08-03 00:00:00           10        0      10       0
  1        2017-08-04 00:00:00           20       60    1470      20
  3        2017-08-05 00:00:00           0        58       0      24
  4        2017-08-06 00:00:00           0         0     480      24
  5        2017-09-07 00:00:00           0         0       0      25
  :                 :                     :         :       :      :
  :                 :                     :         :       :      :
 29       2017-09-30 00:00:00

Объяснение изображения должно быть примерно таким:

enter image description here

y4, y5 .... онтоп каждого подплота в изображении - это отображаемое имя конкретного столбца, которое в моем кадре данных может быть 0.0,1.0 .... 25.0. Тиковые метки оси X будут столбцом даты и времени моего фрейма данных, df. ось Y - это диапазон значений для всех столбцов. Вот код:

#Initialize the figure
plt.style.use('seaborn-darkgrid')
#create a color palette
palette = plt.get_cmap('tab20')
#multiple line plot
num=0
for column in df.drop(' DateTimestamp', axis=1):
num+=1
# Find the right spot on the plot
plt.subplot(6,6, num)
# plot every groups, but discreet
for v in df.drop(' DateTimestamp', axis=1):
plt.plot(df.index, df[v], marker='', color='grey', 
linewidth=0.6, alpha=0.3)
# Plot the lineplot
plt.plot(df.index, df[column], marker='', color=palette(num), 
linewidth=2.4, alpha=0.9, label=column)
# Same limits for everybody!
plt.xlim(0,29)
plt.ylim(0,200) # the limit of the y-axis should be the max value of all possible column values 
# Not ticks everywhere
if num in range(29) :
plt.tick_params(labelbottom='off')
if num not in [1,15,28] :
plt.tick_params(labelleft='off')
# Add title
plt.title(column, loc='left', fontsize=12, fontweight=0, color=palette(num) )
#general title
plt.suptitle("Line Plot",fontsize=13, fontweight=0, color='black',style='italic', y=1.02)
#Axis title
plt.text(0.5, 0.02, 'Time', ha='center', va='center')
plt.text(0.06, 0.5, 'Number', ha='center', va='center', rotation='vertical')

Тем не менее, я получаю это плохое изображение, где фигура размыта, а ось X конфликтует между подзадачами предыдущих. Любая идея, что я могу сделать, чтобы увеличить разрешение линейного графика, каждого из вспомогательного участка и расстояния между предыдущими и текущим участками enter image description here

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