[英]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.