Matplotlib线条集合和额外线条
我有一组线条添加到了一个图表中。
https://stackoverflow.com/a/24593105/1127601
我想在这个图表上添加第二条线,并且希望有一个额外的y轴。我想在图表中显示的不仅仅是这组线条。
这些数据是基于一个pandas的数据框,如果我直接用想要绘制的列来调用绘图,图表根本什么都不显示。
fig, axes = plt.subplots()
x=mpd.date2num(df_resamplew1.index.to_pydatetime())
y=df_resamplew1.winds.values
c=df_resamplew1['temp'].values
points = np.array([x, y]).T.reshape(-1, 1, 2)
segments = np.concatenate([points[:-1], points[1:]], axis=1)
lc = LineCollection(segments, cmap=plt.get_cmap('copper'), norm=plt.Normalize(0, 10))
lc.set_array(c)
lc.set_linewidth(3)
#ax=plt.gca()
axes.add_collection(lc)
plt.xlim(min(x), max(x))
#plot a second line
df_resamplew1['diff_modulo'].plot(ax=axes, color='b', linewidth=2, label="Niederschlag mm/h")
axes.xaxis.set_major_locator(mpd.DayLocator())
axes.xaxis.set_major_formatter(mpd.DateFormatter('%Y-%m-%d'))
_=plt.setp(axes.xaxis.get_majorticklabels(), rotation=45 )
只有线条集合的图表,没有尝试绘制第二条线

线条集合加上额外的线条

谢谢!
编辑:
把
df_resamplew1['diff_modulo'].plot(ax=axes, color='b', linewidth=2, label="Niederschlag mm/h")
移动到代码块的顶部,虽然让图表不完全没用,但我还是看不到我想要的效果。如果可能的话,比起额外的线条,能有一个条形图和线条集合一起显示会更好。
1 个回答
3
这些额外的代码行可以这样写:
#df['another']=np.random.random(some_number)
ax2=ax.twinx()
ax2.bar(left=x, height=df.another, width=0.02)
在绘制时间序列图时,不要把 pandas.plot
和 matplotlib
混在一起使用,因为它们对日期时间的处理方式不同。你可以通过在调用 pandas.plot()
之前和之后都调用 plt.xlim()
来验证这一点。