我有一本帶有日期(年、月、日)和時間戳(時、分、秒)的字典,如下所示:
dict = {datetime.date(2021, 11, 1): [datetime.time(7, 43, 23)],
datetime.date(2021, 11, 8): [datetime.time(6, 4, 45),
datetime.time(6, 3, 36),
datetime.time(5, 56, 26)],
datetime.date(2021, 11, 12): [datetime.time(8, 5, 11),
datetime.time(5, 44, 45),
datetime.time(5, 24, 14),
datetime.time(4, 56, 5)]}
我想用它制作散點圖。首先我寫了這段代碼:
from matplotlib import pyplot as plt
for key, value in dict.items():
x = [key]*len(value)
y = value
plt.scatter(x, y)
plt.tight_layout()
plt.show()
這段代碼產生了一個錯誤:
TypeError: float() argument must be a string or a number, not 'datetime.time'
然后我嘗試使用matplotlib.dates將我的代碼更改為以下內容來轉換日期時間:
from matplotlib import pyplot as plt
import matplotlib.dates as mdates
for key, value in dict.items():
x = [mdates.date2num(key)]*len(value)
y = [mdates.date2num(y) for y in value]
plt.scatter(x, y)
plt.tight_layout()
plt.show()
此代碼產生了另一個錯誤:
ValueError: Could not convert object to NumPy datetime
起初,問題看起來很簡單。但是,現在我不明白如何使用 matplotlib 來處理它。
我的問題:
- 如何使用 matplotlib 工具處理日期時間物件?
- 處理matplotlib中的日期時間物件時如何正確設定刻度和刻度?
uj5u.com熱心網友回復:
您可以使用熊貓的日期時間功能:
import pandas as pd
arr = []
for key, value in dict.items():
for time in value:
arr.append([key, time])
df = pd.DataFrame(arr, columns=['day', 'time'])
df.day = pd.to_datetime(df.day)
df.time = pd.to_datetime(df.time.astype('str'))
plt.scatter(df.day, df.time)

uj5u.com熱心網友回復:
您可以通過結合合適的虛擬日期將您的time物件轉換為datetime,然后繪制:
from datetime import date
from datetime import datetime
value = [datetime.combine(date.today(), value) for v in value]
scatter(x, value)
matplotlib 不會為您執行此操作,因為它無法知道您想要的開始日期。
如果您不想在 y 軸中顯示日期,請設定日期格式化程式:https : //matplotlib.org/stable/api/dates_api.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/359782.html
標籤:Python 约会时间 matplotlib
