簡體   English   中英

如何在 Pandas 的 X 或 Y 軸上自定義軸刻度 label?

[英]How to customize axis ticks label on X or Y axis in Pandas?

我在嘗試自定義 x 軸刻度標簽時遇到了困難。 我正在繪制一張關於每天售出的筆記本電腦數量的圖表。 我想要的是 x 軸顯示所有 7 天的天數和相應的計數值,包括售出 0 台筆記本電腦的天數。 我還希望 x 軸(天)按升序排序。 我怎么做? 下面是我的代碼:

count = [5,1,12,3,4]
day = pd.Series(['3','2','4','5','7'], dtype="category")
df = pd.DataFrame({'day':day, 'count':count})

trace1 = go.Bar(x=df['day'], y=df['count'], name= 'Day', text=df['count'], textposition='auto', marker_color='rgb(55, 83, 109)')

data = [trace1]

layout = go.Layout(title='Laptops sold daily', xaxis=dict(title='Day'), yaxis=dict(title='Count of Laptops'), hovermode='closest')
fig = go.Figure(data=data, layout=layout)
pyo.iplot(fig)

Dataframe Output

圖 Output

Output 圖表基於接受的解決方案: 在此處輸入圖像描述

在您可能需要的所有日子里,首先Merge您的 dataframe。 沒有銷售的天數將具有NaN計數,這會導致銷售計數列變為浮動。 我們最終將NaN替換為0並轉換回int

df = df.merge(pd.Series(range(1,8), name='day').astype(str), how='right').fillna(0).astype(int)

生成的 dataframe 將自動排序,因為右連接保留到(右)鍵的順序,您按升序提供。

由於您使用的是pyo.iplot(fig) ,我想向您展示如何使用plotly 作為 pandas 的繪圖后端更輕松地做到這一點。 數據處理與 Stef 的建議相同。

代碼

# imports and settings
import pandas as pd
pd.options.plotting.backend = "plotly"

# data
count = [5,1,12,3,4]
day = pd.Series(['3','2','4','5','7'], dtype="category")
df = pd.DataFrame({'day':day, 'count':count})
df = df.merge(pd.Series(range(1,8), name='day').astype(str), how='right').fillna(0).astype(int)

# plotly
fig = df.plot(kind='bar', x = 'day', y = 'count', text='count')
fig.update_traces(marker_color='rgb(55, 83, 109)')

Plot

在此處輸入圖像描述

另一種方法是使用包含星期幾和日期編號的字典來更新 x 軸,以便 x 軸可以擴展到日期的名稱。

df.set_index('day', inplace=True)
weekdaynum = {'1':'Mon','2':'Tue','3':'Wed','4':'Thu','5':'Fri','6':'Sat','7':'Sun'}
df = df.reindex(weekdaynum.keys(), fill_value=0)
df.reset_index(inplace=True)
df.day = df.day.map(weekdaynum)

    day     count
0   Mon     0
1   Tue     1
2   Wed     5
3   Thu     12
4   Fri     3
5   Sat     0
6   Sun     4

在此處輸入圖像描述

暫無
暫無

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

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