matplotlib 如何将不同的数据组从一个图表绘制成一个单一的图形

e0bqpujr  于 2023-11-22  发布在  其他
关注(0)|答案(5)|浏览(209)

我有一个温度文件,其中包含多年的 * 温度 * 记录,格式如下:

  1. 2012-04-12,16:13:09,20.6
  2. 2012-04-12,17:13:09,20.9
  3. 2012-04-12,18:13:09,20.6
  4. 2007-05-12,19:13:09,5.4
  5. 2007-05-12,20:13:09,20.6
  6. 2007-05-12,20:13:09,20.6
  7. 2005-08-11,11:13:09,20.6
  8. 2005-08-11,11:13:09,17.5
  9. 2005-08-13,07:13:09,20.6
  10. 2006-04-13,01:13:09,20.6

字符串
每一年都有不同的时间记录,所以pandasdatetimeindices都是不同的。
我想把不同年份的数据绘制在同一张图中进行比较:

  • 从1月到12月,X轴为datetimeindices
  • Y轴是 * 温度 *

我该怎么做呢?

ukxgm1gy

ukxgm1gy1#

试试看:

  1. ax = df1.plot()
  2. df2.plot(ax=ax)

字符串

apeeds0o

apeeds0o2#

如果你有一个正在运行的Python/Ipython笔记本,并且在使用时遇到问题;
第一个月
df2.plot(ax=ax)
在同一个单元格中运行命令!!由于某种原因,当它们被分成连续的单元格时,它不会工作。至少对我来说是这样。

vpfxa7rd

vpfxa7rd3#

  • Chang的答案展示了如何在同一个axes上绘制不同的DataFrame。
  • 在这种情况下,所有数据都在同一个 Dataframe 中,因此最好使用groupbyunstack
  • 或者,可以使用pandas.DataFrame.pivot_table
  • dfp = df.pivot_table(index='Month', columns='Year', values='value', aggfunc='mean')
  • 当使用pandas.read_csv时,names=在文件中没有列标题时创建列标题。'date'列必须解析为datetime64[ns] Dtype,以便.dt提取器可以用于提取monthyear
  1. import pandas as pd
  2. # given the data in a file as shown in the op
  3. df = pd.read_csv('temp.csv', names=['date', 'time', 'value'], parse_dates=['date'])
  4. # create additional month and year columns for convenience
  5. df['Year'] = df.date.dt.year
  6. df['Month'] = df.date.dt.month
  7. # groupby the month a year and aggreate mean on the value column
  8. dfg = df.groupby(['Month', 'Year'])['value'].mean().unstack()
  9. # display(dfg)
  10. Year 2005 2006 2007 2012
  11. Month
  12. 4 NaN 20.6 NaN 20.7
  13. 5 NaN NaN 15.533333 NaN
  14. 8 19.566667 NaN NaN NaN

字符串
现在很容易将每年绘制为单独的线。OP每年只有一个观察结果,因此只显示一个标记。

  1. ax = dfg.plot(figsize=(9, 7), marker='.', xticks=dfg.index)


的数据

展开查看全部
8iwquhpp

8iwquhpp4#

要对多个嵌套框执行此操作,可以对它们执行for循环:

  1. fig = plt.figure(num=None, figsize=(10, 8))
  2. ax = dict_of_dfs['FOO'].column.plot()
  3. for BAR in dict_of_dfs.keys():
  4. if BAR == 'FOO':
  5. pass
  6. else:
  7. dict_of_dfs[BAR].column.plot(ax=ax)

字符串
这也可以在没有if条件的情况下实现:

  1. fig, ax = plt.subplots()
  2. for BAR in dict_of_dfs.keys():
  3. dict_of_dfs[BAR].plot(ax=ax)

展开查看全部
k97glaaz

k97glaaz5#

您可以在seaborn中使用hue参数。例如:

  1. import seaborn as sns
  2. df = sns.load_dataset('flights')
  3. year month passengers
  4. 0 1949 Jan 112
  5. 1 1949 Feb 118
  6. 2 1949 Mar 132
  7. 3 1949 Apr 129
  8. 4 1949 May 121
  9. .. ... ... ...
  10. 139 1960 Aug 606
  11. 140 1960 Sep 508
  12. 141 1960 Oct 461
  13. 142 1960 Nov 390
  14. 143 1960 Dec 432
  15. sns.lineplot(x='month', y='passengers', hue='year', data=df)

字符串


的数据

展开查看全部

相关问题