簡體   English   中英

更改 plot 的 x 軸

[英]change x-axis of a plot

我正在嘗試將 2015-2020 年的前 25 周內經過的車輛可視化,所有這些都在一張圖中(每年一條曲線)。

df_data_groups = df_data[(df_data['week']<=25)].groupby(['year','week'])
df_data_weekly = df_data_groups[['NO','nr_of_vehicles']].mean()

fig, ax = plt.subplots()
bp = df_data_weekly['nr_of_vehicles'].groupby('year').plot(ax=ax)

以下是我得到的

陰謀

x 軸不對。 它不應該包含年份,只有幾周,但我不知道如何正確解決這個問題。 它也不允許我創建一個圖例來顯示哪些線條屬於線條的顏色,使用:

bp.set_legend()

顯示的索引是組中最后一個 dataframe 的索引。 這個 dataframe 有 2 級索引:年和周。 刪除第一個索引(年份)將只顯示周:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

df_data = pd.DataFrame({'year': np.repeat(np.arange(2015, 2021), 52),
                        'week': np.tile(np.arange(1, 53), 6),
                        'nr_of_vehicles': 200_000 + np.random.randint(-9_000, 10_000, 52 * 6).cumsum()})
df_data_groups = df_data[(df_data['week'] <= 25)].groupby(['year', 'week'])
df_data_weekly = df_data_groups[['nr_of_vehicles']].mean()

fig, ax = plt.subplots()
for year, df in df_data_weekly['nr_of_vehicles'].groupby('year'):
    df.reset_index(level=0, drop=True).plot(ax=ax, label=year)
ax.legend()
ax.margins(x=0.02)
plt.show()

示例圖

PS:請注意,在問題的代碼中, bp是一個軸列表,每年一個ax 在這種情況下,它們都指向同一個ax bp組織為 pandas 系列,要獲得圖例,請獲取軸之一: bp[2015].legend() (或bp.iloc[0].legend() )。

暫無
暫無

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

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