簡體   English   中英

使用 Seaborn 為 x 軸繪制超過 10K 的數據點作為時間戳

[英]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_xticksax.set_xlabels手動設置 x 刻度和 x 標簽。 您也可以使用 fig.autofmt_xdate() 來旋轉 x 標簽

暫無
暫無

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

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