如何让Plotly Express直方图X轴仅显示完整年份而非半年份?
解决Plotly Express直方图X轴显示非完整年份的问题
问题原因
Plotly默认将数值类型的年份识别为连续变量,因此会自动生成如2019.5这类中间刻度值。以下是几种可行的解决办法:
方法1:将年份转为字符串类型
把YEAR列转换为字符串后,Plotly会将其视为离散类别,仅显示数据中存在的完整年份:
import pandas as pd import plotly.express as px hail_month2 = {"YEAR": [2018, 2019], "MAGNITUDE": [1.75, 2]} hail_month2 = pd.DataFrame(hail_month2) # 转换年份为字符串类型 hail_month2['YEAR'] = hail_month2['YEAR'].astype(str) month2 = px.histogram(hail_month2, x='YEAR', color='MAGNITUDE') month2.show()
方法2:手动指定X轴刻度与范围
若需保留年份的数值属性,可通过update_xaxes强制设置X轴仅显示数据中的完整年份:
import pandas as pd import plotly.express as px hail_month2 = {"YEAR": [2018, 2019], "MAGNITUDE": [1.75, 2]} hail_month2 = pd.DataFrame(hail_month2) month2 = px.histogram(hail_month2, x='YEAR', color='MAGNITUDE') # 设置X轴刻度为数据中的唯一年份,同时限定轴范围 month2.update_xaxes( tickvals=hail_month2['YEAR'].unique(), range=[2017.5, 2019.5] ) month2.show()
方法3:将年份转为分类类型
将YEAR列设为pandas的分类类型,同样会被Plotly识别为离散类别,避免生成中间刻度:
import pandas as pd import plotly.express as px hail_month2 = {"YEAR": [2018, 2019], "MAGNITUDE": [1.75, 2]} hail_month2 = pd.DataFrame(hail_month2) # 转换为分类类型 hail_month2['YEAR'] = hail_month2['YEAR'].astype('category') month2 = px.histogram(hail_month2, x='YEAR', color='MAGNITUDE') month2.show()
内容的提问来源于stack exchange,提问作者Shawn
相关产品推荐
相关产品推荐

