matplotlib 在单线图中绘制不同的数据框

m1m5dgzv  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(115)

我有不同的 Dataframe 相同的长度,让我们说10行不同的价值观。第一个 Dataframe 是静态的,但是其余的都是用户输入的,假设用户想要2个 Dataframe ,那么总共将是3个具有相同长度的 Dataframe 。我想在python的一个线图中绘制所有三个值。

import pandas as pd
import matplotlib.pyplot as plt

L1 = pd.DataFrame([20,19,18,17,16,15])
K1 = pd.DataFrame([15,14,13,11,18,21])
k2 = pd.DataFrame([10,15,16,21,22,25])

fig1 = plt.figure()
ax1 = fig1.add_subplot(111)
ax1.plot(L1[0])
ax1.plot(k1[0])
ax1.plot(k2[0])
fig1.savefig(Path + "abc.png")

字符串
我尝试了上面的方法,但当我在循环中运行它时,它只绘制L1和K1。如何在一个图中绘制所有三个数据框?

zbq4xfa0

zbq4xfa01#

当你创建一个subplots set number of rows and columns plt.sublots(nbrow, nbcol)这将返回两个对象:主框架的图形和轴,每个轴都是子图

import pandas as pd
import matplotlib.pyplot as plt

L1 = pd.DataFrame([20,19,18,17,16,15])
K1 = pd.DataFrame([15,14,13,11,18,21])
k2 = pd.DataFrame([10,15,16,21,22,25])
fig, axs = plt.subplots(3, 1)
axs[0].plot(L1.values)
axs[1].plot(K1.values)
axs[2].plot(k2.values)
axs[0].set_ylabel('YLabel 0')
axs[1].set_ylabel('YLabel 1')
axs[2].set_ylabel('YLabel 2')
fig.align_ylabels()
plt.show()

字符串

1yjd4xko

1yjd4xko2#

因为你只有数字,我看不出使用pandas DataFrame的理由,所以我把它们转换成了numpy数组。然后,只需将每个数组绘制在单个子图中即可。

import matplotlib.pyplot as plt
import numpy as np

L1 = np.array([20,19,18,17,16,15])
K1 = np.array([15,14,13,11,18,21])
k2 = np.array([10,15,16,21,22,25])

fig, ax = plt.subplots()
ax.plot(L1, label="L1")
ax.plot(K1, label="K1")
ax.plot(k2, label="k2")
ax.legend()
ax.set_xlabel("index")

字符串


的数据

相关问题