【发布时间】:2015-05-24 21:12:16
【问题描述】:
我在 Python 2.7 中有以下 Pandas DataFrame。
Name Date Val_Celsius Rm_Log
Lite 2012-07-17 77 12
Lite 2012-12-01 76 -21
Lite 2012-09-01 79 73
Lite 2013-12-01 78 945
Staed 2012-07-17 105 36
Staed 2012-12-01 104 19
Staed 2012-09-01 102 107
Staed 2013-12-01 104 11
ArtYr 2012-07-17 -11 100
ArtYr 2012-12-01 -14 21
ArtYr 2012-09-01 -10 68
ArtYr 2013-12-01 -12 83
我需要将 Rm_Log 数字绘制为 y 变量,我需要将 Date 绘制为 x 变量。
但是,我需要在同一个图中有 3 个单独的重叠图 - 第一个图是 Lite,第二个是 Staed,第三个是 ArtYr。我需要图例来显示 3 个条目,Lite、Staed 和 ArtYr。
我以前从未做过这样的情节。通常,我有单独的列,但这里的数字排列方式不同。
如果我为每个 Name 创建 3 个单独的 DataFrame,则可以进行绘图。但是,Name 列的条目通常比我展示的 3 个多得多,因此这种方法非常耗时。此外,条目的数量是不知道提前的。即这里我展示了 3 个条目,Lite、Staed 和 ArtYr,但可能有 50 个或可能有 100 个条目。每次需要生成一个图形时,我无法创建 50-100 个 DataFrame。
对于每个 Name 值,如何在同一图中显示 Rm_Log 与 Date 列的重叠图?是否可以让日期在 x 轴上垂直?
编辑: 使用 ax.set_ticks(df.index) 时出现错误:
File "C:\Python27\lib\site-packages\matplotlib\axes\_base.py", line 2602, in set_xticks
return self.xaxis.set_ticks(ticks, minor=minor)
File "C:\Python27\lib\site-packages\matplotlib\axis.py", line 1574, in set_ticks
self.set_view_interval(min(ticks), max(ticks))
File "C:\Python27\lib\site-packages\matplotlib\axis.py", line 1885, in set_view_interval
max(vmin, vmax, Vmax))
File "C:\Python27\lib\site-packages\matplotlib\transforms.py", line 973, in _set_intervalx
self._points[:, 0] = interval
ValueError: invalid literal for float(): 2012-07-17
【问题讨论】:
标签: python-2.7 pandas plot