我有一个数据框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
对图像的解释应该是这样的:
图片中每个子图的y4,y5 ....是要显示的特定列名,在我的数据框中可以是0.0,1.0 .... 25.0。 x轴刻度标签将是我的数据框df的datetimestamp列。 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轴在前一个子图之间发生冲突。任何想法我可以做些什么来增加线图的分辨率,每个子图以及以前的子图和当前子图之间的间距