我有两个不同的数据框架:
DF1: with columns A B1 C1 D1 E1
DF2: with columns A B2 C2 D2 E2
两个人的A相同。
然后我想在同一个图中绘制两个图,一个在右边,另一个在左边有这个信息:
Plot 1: x axis = column A
y axis = B1, B2, C1, C2 curves
Plot 2: x axis = column A
y axis = D1, D2, E1, E2 curves
如果不使用Pandas和Matplotlib合并两个DF,我怎么能这样做?
答案 0 :(得分:7)
我们的想法是创建一个轴ax
和一个双轴ax2 = ax.twinx()
,然后将每个数据框绘制为其中一个,df.plot(ax=ax)
和df2.plot(ax=ax2)
。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
a = np.linspace(-5,5, 11)
data1 = np.sort(np.random.rand(len(a),5))
data1[:,0] =a
data2 = np.sort(np.random.rand(len(a),5))*10
data2[:,0] =a
df = pd.DataFrame(data1, columns=["A", "B1", "C1", "D1", "E1"])
df2 = pd.DataFrame(data2, columns=["A", "B2", "C2", "D2", "E2"])
fig, ax = plt.subplots()
ax2 = ax.twinx()
df.plot(x="A", y=["B1", "C1", "D1", "E1"], ax=ax)
df2.plot(x="A", y=["B2", "C2", "D2", "E2"], ax=ax2, ls="--")
plt.show()
如果您想要有两个单独的图(问题在这一点上不明确),您可以通过
来完成fig, (ax, ax2) = plt.subplots(ncols=2)
并删除twinx
来电。
答案 1 :(得分:0)
您可以使用
f, (ax1, ax2) = plt.subplots(1,2)
将创建包含1行和2列子图的绘图。 它可能是使用
获取数据帧列的最简单方法A = DF1['A']
...
以防matplotlib不喜欢直接使用数据框列。
然后,您可以将列绘制到不同的子图中。这看起来像以下示例:
f, (ax1, ax2) = plt.subplots(1,2)
ax1.plot(A, B1, label='...')
ax1.plot(A, B2, label='...')
...
ax2.plot(A, D1, label='...')
ax2.plot(A, D2, label='...')
...
ax1.legend(loc='best')
ax2.legend(loc='best')
plt.show()