Plotly Dash绘制人口条形图结果异常,应使用什么格式输入数据?
问题原因
你当前数据集中的Men和Women列是带%后缀的字符串类型,Plotly无法识别这类文本为可统计的数值,因此绘图输出异常。
修复方案
- 先做数据格式清洗
用pandas处理的话,先把百分比列转为数值格式,代码如下:
# 去除百分比符号,转为浮点型数值 facebook2['Men'] = facebook2['Men'].str.rstrip('%').astype('float') facebook2['Women'] = facebook2['Women'].str.rstrip('%').astype('float')
- 绘制堆叠条形图
原有绘图代码无需调整,执行即可得到正常结果:
import plotly.express as px example_graph11 = px.bar(facebook2, x='Age', y=['Men', 'Women'], barmode='stack', title = '不同年龄、性别的Facebook粉丝占比') example_graph11.show()
- 人口金字塔图实现方法
人口金字塔需要将单侧数值转为负数后再绘图,再调整坐标轴显示格式即可正常生成:
# 将男性占比转为负数,用于展示在金字塔左侧 facebook2['Men_negative'] = -facebook2['Men'] pyramid_fig = px.bar(facebook2, y='Age', x=['Men_negative', 'Women'], barmode='relative', orientation='h', title='Facebook粉丝年龄性别分布金字塔', labels={'value':'粉丝占比', 'variable':'性别'}) # 调整x轴刻度,将负数显示为正的百分比值 pyramid_fig.update_xaxes(tickformat=lambda x: f"{abs(x)}%") # 修改图例显示文本 pyramid_fig.data[0].name = '男性' pyramid_fig.data[1].name = '女性' pyramid_fig.show()
内容的提问来源于stack exchange,提问作者Map_confused
相关产品推荐
相关产品推荐

