Matplotlib线条集合和额外线条

1 投票
1 回答
2066 浏览
提问于 2025-04-18 12:16

我有一组线条添加到了一个图表中。

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 )

只有线条集合的图表,没有尝试绘制第二条线

Line collection

线条集合加上额外的线条

Line Collection plus additional line

谢谢!

编辑:

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.plotmatplotlib 混在一起使用,因为它们对日期时间的处理方式不同。你可以通过在调用 pandas.plot() 之前和之后都调用 plt.xlim() 来验证这一点。

在这里输入图片描述

撰写回答