📅  最后修改于: 2023-12-03 14:52:51.810000             🧑  作者: Mango
Plotly 是一个数据可视化工具,类似于 Matplotlib 和 Seaborn,但它的可视化效果更加美观、交互性更强。创建人口金字塔是 Plotly 常见的应用之一,本文将介绍如何用 Python 和 Plotly 创建人口金字塔。
首先,我们需要准备两个变量,一个是人口数量,一个是人口的年龄分布。这里我们使用一个示例数据集,包含了美国人口的年龄分布和人口数量。示例数据集如下:
import pandas as pd
data = pd.DataFrame({
'Age': ['0-4', '5-9', '10-14', '15-19', '20-24', '25-29', '30-34', '35-39', '40-44', '45-49', '50-54', '55-59', '60-64', '65-69', '70-74', '75-79', '80-84', '85+'],
'Male': [19842351, 20729834, 20699724, 22084599, 21530949, 20713535, 19874662, 19349678, 18661868, 17963814, 16653394, 15122684, 13952582, 11503008, 8413209, 4924735, 2383294, 1840384],
'Female': [18982847, 19957550, 19931720, 21267641, 20982162, 20468179, 19520610, 19137421, 18727614, 18315782, 17094447, 15835846, 14873691, 11905948, 7127229, 3583295, 1503661, 2256022]
})
这里我们使用 pandas 包创建了一个数据帧,其中 Age
是年龄分布的区间,Male
是男性在该年龄区间内的人口数量,Female
是女性在该年龄区间内的人口数量。
然后,我们可以使用 Plotly 绘制人口金字塔,具体步骤如下:
import plotly.graph_objs as go
trace1 = go.Bar(
y=data['Age'],
x=data['Male'],
name='Male',
orientation='h',
marker=dict(color='skyblue'),
opacity=0.75
)
trace2 = go.Bar(
y=data['Age'],
x=-data['Female'],
name='Female',
orientation='h',
marker=dict(color='pink'),
opacity=0.75
)
layout = go.Layout(
barmode='overlay',
paper_bgcolor='rgb(243, 243, 243)',
plot_bgcolor='rgb(243, 243, 243)',
margin=dict(l=50, r=50, b=100, t=100),
xaxis=dict(
showgrid=False,
showline=False,
showticklabels=True,
zeroline=False,
domain=[0.15, 1]
),
yaxis=dict(
showgrid=False,
showline=False,
showticklabels=True,
zeroline=False,
tickmode='array',
tickvals=data['Age'],
ticktext=data['Age'],
domain=[0, 0.85]
)
)
data = [trace1, trace2]
fig = dict(data=data, layout=layout)
可以看到,我们创建了两个 go.Bar
对象,分别表示男性和女性的人口数量,同时设置了透明度和颜色。接着,我们创建了一个 go.Layout
对象,用来设置图表的样式和布局。其中 barmode
设置为 'overlay'
,表示两个条形图会叠在一起;paper_bgcolor
和 plot_bgcolor
设置为 'rgb(243, 243, 243)'
,表示图表的背景色;margin
设置为左、右、下、上的边距大小;xaxis
和 yaxis
分别设置水平和垂直坐标轴的样式和显示内容。
最后,我们将 trace1
和 trace2
两个条形图对象传入 dict
类型的 fig
对象中,然后就可以得到一个人口金字塔了。
最后,我们可以使用 plotly.offline
模块将人口金字塔显示出来:
import plotly.offline as pyo
pyo.init_notebook_mode()
pyo.iplot(fig)
这里我们使用了 plotly.offline.iplot
函数将人口金字塔显示在 Jupyter Notebook 中。
本文介绍了如何使用 Python 和 Plotly 创建人口金字塔,通过本文的学习,读者们应该已经可以轻松地使用 Plotly 绘制人口金字塔了。当然,如果需要更加个性化的样式和布局,也可以根据实际需求对上述代码进行修改。