簡體   English   中英

如何在PyPlot中plot.show()日期時間格式的數據“ mm-dd-yy hh:mm:ss”?

[英]How to plot.show() datetime formatted data “mm-dd-yy hh:mm:ss” in PyPlot?

我正在嘗試使用Anaconda的Spyder分布從data.boston.gov( https://data.boston.gov/dataset/central-library-electricity-usage )繪制數據集。 原始數據集包含2x10 ^ 5個以上的實例,因此我僅限於2018年。該圖將不會顯示。

import pandas as pd
from matplotlib import pyplot as plt

data = pd.read_csv('bpl_energy_2018.csv')

plt.plot(data.datetime_measured,data.total_demand_kw)
plt.show()

['datetime_measured','total_demand_kw']

- 0 12-31-18 23:55:00 561
- 1 12-31-18 23:50:00 568
- 2 12-31-18 23:45:00 576
...
- 53690  01-01-18 03:40:00 770
- 53691  01-01-18 03:30:00 813
- 53692  01-01-18 02:55:00 777

[53693 rows x 2 columns]

我認為它不起作用的原因是因為您的數據全部亂了,所以matplotlib不知道如何處理您提供的值。

Pandas具有一些內置的繪圖功能,因此您應該能夠使用

data.plot()
plt.show()

情節看起來像這樣:

data_plotted_through_2018

但這基本上只是隨機噪聲。 如果您查看CSV中的值,則會發現它們未按時間完美排序。 不過,我們可以解決此問題而沒有太多麻煩:

data.sort_values('datetime_measured', inplace=True)
data.reset_index(drop=True, inplace=True)

如果再次繪制,將得到以下結果:

這個情節

由於您正在繪制時間序列,因此建議您使用內置在繪制函數中的pandas ,尤其是當您已經將數據作為DataFrame

要在xaxis上保留日期時間格式,只需告訴.plot()函數要使用哪些列。 例如:

import pandas as pd
from matplotlib import pyplot as plt

data = pd.read_csv('bpl_energy_2018.csv')
data.sort_values('datetime_measured', inplace=True)

data.plot('datetime_measured', 'total_demand_kw')

# Rotate and align xtick labels
ax.get_figure().autofmt_xdate()

# make room for tick labels
plt.tight_layout()

plt.show()

請注意,我使用ax.get_figure().autofmt_xdate()旋轉了刻度ax.get_figure().autofmt_xdate() ,並使用tight_layout()為它們tight_layout()了空間。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM