使用Pandas在同一图中绘制不同DataFrame的不同列。

7

我有两个不同的数据框:

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?

2个回答

20

这个想法是创建一个轴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
惊讶于没有其他人点赞这个帖子。非常好的解释和可靠的数据。 - user1717828

-1

你可以使用

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()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接