[英]plotting multiple columns with date data on the x-axis using seaborn
[英]Plotting more than 10K data point using Seaborn for x-axis as timestamp
我正在嘗試 plot 超過 10k 數據點,我想 plot 數據屬性與時間戳。 但在 x 軸上,時間戳重疊且不可見。
如何減少 x 軸上的標簽數量,使它們清晰易讀?
import pandas as pd
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
sns.set_style("whitegrid")
data = pd.read_csv('0912Testday4.csv',header=2)
for i in data.columns:
if i!='TIMESTAMP':
sns.lineplot(x="TIMESTAMP",y=i,data = data)
plt.title(f"{i} vs TIMESTAMP")
plt.show()
示例 plot 演示了該問題:
更新: TIMESTAMP是字符串格式,通過轉換為數據時間格式可以解決問題。
data['TIMESTAMP'] = pd.to_datetime(data['TIMESTAMP'])
請確保TIMESTAMP
是日期時間 object。 當 x 軸是日期時間時,不應發生這種情況。 (您可以使用pd.to_datetime
將 int、float、str 和...轉換為 datetime。)
如果TIMESTAMP
是日期時間,則可以使用autofmt_xdate()
方法:
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
fig, ax = plt.subplots() # Create a figure and a set of subplots.
sns.set_style("whitegrid")
data = pd.read_csv('0912Testday4.csv',header=2)
# Use the following line if the TIMESTAMP is not a datetime.
# (You may need to change the format from "%Y-%m-%d %H:%M:%S+00:00".)
# data['TIMESTAMP'] = pd.to_datetime(data.TIMESTAMP, format="%Y-%m-%d %H:%M:%S+00:00")
for i in data.columns:
if i!='TIMESTAMP':
sns.lineplot(x="TIMESTAMP", y=i, data=data, ax=ax)
fig.autofmt_xdate() # rotate and right align date ticklabels
plt.title(f"{i} vs TIMESTAMP")
plt.show()
更新:TIMESTAMP 是字符串格式,通過轉換為日期時間格式可以解決問題。
data['TIMESTAMP'] = pd.to_datetime(data['TIMESTAMP'])
我沒有遇到sns.lineplot
這樣的問題
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
import seaborn as sns
sns.set_style("whitegrid")
# example data
time_stamps = pd.date_range('2019-01-01', '2020-01-01', freq='H')
vals =[np.random.randint(0, 1000) for i in time_stamps]
data_df = pd.DataFrame()
data_df['time'] = time_stamps
data_df['value'] = vals
print(data_df.shape)
# plotting
fig, ax = plt.subplots()
sns.lineplot(x='time', y='value', data=data_df)
plt.show()
sns 自動選擇 x 刻度和 x 標簽。
或者,您可以使用ax.set_xticks
和ax.set_xlabels
手動設置 x 刻度和 x 標簽。 您也可以使用 fig.autofmt_xdate() 來旋轉 x 標簽
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.