簡體   English   中英

數據框無法正確設置用於 matplotlib 的索引

[英]Dataframe unable to correctly set index for matplotlib use

對於以下

from datetime import datetime
import pandas as pd
from pandas import Timestamp
import matplotlib
import matplotlib.pylab as plt
import matplotlib.dates as mdates
#%matplotlib inline 
sorted(df.columns)
df = df[df.region=="US"]
df.set_index('date')
df.head(50)
def plot_cat(df_input, cat, color="green"):
    axis = df_input[cat].plot(figsize=(10,6), color=color, fontsize=10, zorder=2)
    axis.set_xlabel("date", fontsize=font_size)
    axis.set_ylabel("", fontsize=font_size); 
    axis.axhline(y=0)
plot_cat(df, "retail", "red") 

使用以下數據https://pastebin.pl/view/b7f35915

生成的圖形不使用“日期”作為 x 軸。

雖然我將索引設置為日期,但它似乎沒有這樣做。 上面 df.head(50) 的輸出是這樣的:

    region  date    retail
0   US  2020-02-15  5.0
1   US  2020-02-16  8.0
2   US  2020-02-17  5.0
3   US  2020-02-18  0.0
4   US  2020-02-19  3.0
5   US  2020-02-20  1.0
6   US  2020-02-21  3.0
7   US  2020-02-22  9.0
8   US  2020-02-23  6.0
9   US  2020-02-24  3.0
10  US  2020-02-25  4.0
11  US  2020-02-26  8.0
12  US  2020-02-27  9.0
13  US  2020-02-28  10.0
14  US  2020-02-29  12.0

我不確定為什么這沒有被設置為索引,我相信這是 matplot 圖無法具有正確 x 軸的原因。

在任何階段都沒有警告消息或錯誤。

將 set_index 行更改為:

df = df.set_index('date')

或者:

df.set_index('date', inplace=True)

@gtomer 的回答應該可以解決您的問題。 不更改數據的另一種選擇是將x傳遞給plot

def plot_cat(df_input, cat, color="green"):
    # change here
    axis = df_input.plot(x='date', y=cat,
                         figsize=(10,6), color=color, 
                         fontsize=10, zorder=2)

    axis.set_xlabel("date", fontsize=font_size)
    axis.set_ylabel("", fontsize=font_size); 
    axis.axhline(y=0)

plot_cat(df, 'retail', 'red')

輸出:

在此處輸入圖片說明

暫無
暫無

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

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