对不起,如果发布,那不是很好。这对我来说是第一个Stack Overflow。 我具有以下结构的数据集:
Revolution1 Position1 Temperature1 Revolution2 Position2 Temperature2
1/min mm C 1/min m C
datas....
我根据时间绘制这些图。现在,我想为每个不同的单位设置一个新的y轴。所以我看了matplotlib示例,并写了这样的内容。 X表示X值,d表示熊猫数据框:
fig,host=plt.subplots()
fig.subplots_adjust(right=0.75)
par1 = host.twinx()
par2 = host.twinx()
uni_units = np.unique(units[1:])
par2.spines["right"].set_position(("axes", 1.2))
make_patch_spines_invisible(par2)
# Second, show the right spine.
par2.spines["right"].set_visible(True)
for i,v in enumerate(header[1:]):
if d.loc[0,v] == uni_units[0]:
y=d.loc[an:en,v].values
host.plot(x,y,label=v)
if d.loc[0,v] == uni_units[1]:
(v,ct_yax[1]))
y=d.loc[an:en,v].values
par1.plot(x,y,label=v)
if d.loc[0,v] == uni_units[2]:
y=d.loc[an:en,v].values
par2.plot(x,y,label=v)
编辑:好吧,我真的很想问这个问题(也许我很紧张,因为这是第一次在这里发布):
我实际上想问为什么它不起作用,因为我只看到2个图。但是通过放大,我看到它实际上绘制了每条曲线...
对不起!
答案 0 :(得分:1)
如果我正确理解,您想要从Dataframe
获得子图。
您可以使用subplots
对象下的plot
函数中的Dataframe
参数来实现此目的。
通过下面的玩具示例,您可以更好地了解如何实现这一目标:
import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame({"y1":[1,5,3,2],"y2":[10,12,11,15]})
df.plot(subplots=True)
plt.show()