使用多个数据帧和列在同一图表上绘制pandas数据帧子图,显示相同的列。
使用多个数据帧和列在同一图表上绘制pandas数据帧子图,显示相同的列。
以下代码展示了两个DataFrame的列,如下图所示。\n如何将相同的列显示在同一张图上。\n
import numpy as np import pandas as pd import matplotlib.pyplot as plt # 创建虚拟的pandas数据框 pd1 = pd.DataFrame({'a':np.random.random(22),'b':np.random.random(22), 'c':np.random.random(22)}) pd2 = pd.DataFrame({'a':np.random.random(22),'b':np.random.random(22), 'c':np.random.random(22)}) # 创建具有两个并排图表的子图 fig, axes = plt.subplots(nrows=3,ncols=2,figsize=(12,6)) # 在子图样式中绘制第一个pandas数据框 pd1.plot(ax = axes[:,0],subplots=True) # 在子图样式中绘制第二个pandas数据框 pd2.plot(ax = axes[:,1],subplots=True) plt.show()
\n[点击查看图片](https://i.stack.imgur.com/Jb04j.png)
问题的原因是希望在同一张图上展示多个pandas数据帧(dataframe)中的相同列。代码中的解决方法是使用matplotlib库中的subplots函数创建一个包含多个子图的图形,并使用循环遍历每个列,并在每个子图上绘制相应的数据。
解决方法的详细步骤如下:
1. 使用matplotlib的subplots函数创建一个包含1行和3列的子图,指定图形的大小为12x6。
2. 使用zip函数将pd1中的列和子图对象进行配对,并通过循环遍历每对列和子图。
3. 在每个子图上,使用plot函数绘制pd1中当前列的数据,并通过label参数设置标签为"{列名} pd1"。
4. 在同一个子图上,使用plot函数绘制pd2中相同列的数据,并通过label参数设置标签为"{列名} pd2"。
5. 使用legend函数在每个子图上添加图例,以便区分不同的数据来源。
最终的输出是一张包含三个子图的图像,每个子图上都展示了两个数据帧中相同列的数据,并通过图例区分了数据来源。