【问题标题】:Plotting Data from Excel file从 Excel 文件中绘制数据
【发布时间】:2020-10-03 23:46:25
【问题描述】:

我正在尝试从 Excel 工作表中加载数据,然后将所有数据绘制在同一个图上,但我对在一个图上绘制多条线有点缺乏经验。每列是经过的时间和相应的剩余行为。我有多个同名的列。每列的时间不同,因此有多个时间列。现在代码只输出 4 个单独的图。有人可以告诉我如何在不让自己过于复杂的情况下做到这一点,我将来必须绘制多个文件并且想要一个简单的方法。

import pandas as pd
import matplotlib.pyplot as plt

HD = pd.read_excel('C:\\Users\\azizl\\Desktop\\HDPD_Data.xlsx')

HD.plot(x='Time Elapsed', y= 'Residual Act.' , label='24')
HD.plot(x='Time Elapsed.1', y= 'Residual Act..1', label='48')
HD.plot(x='Time Elapsed.2', y= 'Residual Act..2', label='normal')
HD.plot(x='Time Elapsed.3', y= 'Residual Act..3', label='physical')
plt.show()
HD.head()

【问题讨论】:

  • 您使用fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(..., ...)) 创建带有子图的图形,然后为第一个子图调用HD.plot(...., ax=axes[0, 0]),为其他子图调用axes[0, 1]axes[1, 0]axes[1, 1]
  • 对不起,我想我写错了,我只是想在一个情节上有多条线,而不是一个有多个情节的数字。
  • 您可以使用fig, ax = plt.subplots((nrows=1, ncols=1, ...) 并使用四次相同的axHD.plot(...., ax=ax)。在最后一个 plot 之后,您可以调用 plt.legend() 以创建具有给定标签的图例。您可以添加使用当前代码获得的绘图图像,并解释您想要的不同之处。没有一些玩具数据,很难提供更多反馈。
  • 请查看How to provide a reproducible copy of your DataFrame using df.head(30).to_clipboard(sep=','),然后edit您的问题,并将剪贴板粘贴到代码块中。始终以文本形式提供minimal reproducible example代码、数据、错误、当前输出和预期输出。如果相关,绘图图像是可以的。

标签: python python-3.x excel matplotlib plot


【解决方案1】:

假设你之前读过HD,来生成你的情节, 试试下面的代码:

import matplotlib.pyplot as plt

labels = ['24', '48', 'normal', 'physical']
for slc in np.split(HD.values, HD.shape[1] // 2, axis=1):
    plt.plot(slc[:, 0], slc[:, 1], 'o-')
plt.xlabel('Time elapsed')
plt.ylabel('Residual Act.')
plt.legend(labels)
plt.show()

这个想法是:

  • 将源 DataFrame 分成 2 列切片 (np.split)。
  • 用当前的 xy 数据绘制每个切片 切片(plt.plot)。
  • 从外部列表创建图例。

为了测试上面的代码,我创建了以下 DataFrame:

   Time Elapsed  Residual Act.  Time Elapsed.1  Residual Act..1  Time Elapsed.2  Residual Act..2  Time Elapsed.3  Residual Act..3 
0          1.00           4.15            1.10             4.10            1.15             3.50            1.05             3.76  
1          1.15           4.01            1.27             3.90            1.30             3.20            1.20             3.00  
2          1.80           3.40            1.90             3.50            2.11             3.00            2.00             2.90  
3          2.20           3.00            2.50             3.05            2.47             2.88            2.30             2.70  
4          2.90           2.50            2.95             2.20            2.90             2.40            3.10             2.30  
5          3.60           2.00            4.00             1.70            3.86             2.20            4.05             2.00  

原始 Excel 文件包含成对的已用时间Residual Act. 列,但 read_excel 添加了 .1.2、... 重复列名。

Time Elapsed 以秒表示,Residual Act. 以任何形式表示 选择单位。

对于以上数据我得到了如下图:

【讨论】:

    猜你喜欢
    • 2017-12-12
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    相关资源
    最近更新 更多