在同一子图(matplotlib)中覆盖两个子图

我使用matplotlib.pltpandas.DataFrame.plot绘制了两个不同的子图。

两个图形都存储在相同的熊猫数据框中,我称之为fYou can download the sample data here

这些图中的一个不能用函数来描述(也就是说,一个x值可以产生两个或多个y值。这就是问题所在(我正在尝试绘制一个正方形)。

我尝试过:

f[f['figure'] == 'fig1'].plot(x='x_axis',y='y_axis',legend=False)
f[f['figure'] == 'fig2'].plot(x='x_axis',legend=False)
plt.show()

在同一子图(matplotlib)中覆盖两个子图

我希望将两个子图合并为一个。有没有办法在与第一个子图相同的子图中绘制第二个子图?我想将两个图都堆叠在一个子图中。

linwehao 回答:在同一子图(matplotlib)中覆盖两个子图

使用DataFrame.pivot_table

df_toplot=df.pivot_table(columns='figure',index='x_axis',values='y_axis').ffill()
print(df_toplot)

输出

figure        fig1       fig2
x_axis                       
0       100.000000  37.033667
1        99.969669  37.033667
2        99.939339  37.033667
3        99.939339  37.033667
4        99.909008  37.033667
...            ...        ...
365       0.060661  18.516833
366       0.060661  18.516833
367       0.060661  18.516833
368       0.060661  18.516833
369       0.030331  18.516833

df_toplot.plot(legend=False)

输出图像:

enter image description here

,

如果您已存储其轴对象,则始终可以一次又一次地绘制到同一图中。喜欢

import matplotlib.pyplot as plt
fig,ax = plt.subplots()

f[f['figure'] == 'fig1'].plot(ax=ax,x='x_axis',y='y_axis',legend=False)
f[f['figure'] == 'fig2'].plot(ax=ax,legend=False)
plt.show()

请注意,这只是如何获取当前轴的一个示例-另一个可能是

ax = plt.gca()

这里的要点是在熊猫的plot命令中使用ax kwarg来引用它。

本文链接:https://www.f2er.com/3148478.html

大家都在问