龙空技术网

文科生自学Python-用Plotly绘制环形占比关系图

斜杆奶爸Thomas 135

前言:

现在小伙伴们对“python绘制关系图”都比较关心,姐妹们都想要知道一些“python绘制关系图”的相关资讯。那么小编也在网络上搜集了一些对于“python绘制关系图””的相关内容,希望大家能喜欢,小伙伴们一起来学习一下吧!

--知中有行,行中有知;以知为行,知行合一,学习编程成就更好的自己--

Python语言简洁生动,特别适合文科生学习入门IT世界,用几十行代码就能够做一个完整的爬虫脚本,开发效率杠杠的!短时间内即可解决工作和学习中碰到的各种棘手问题。(本人外语专业毕业,机缘巧合爱上编程,自学道路曲曲折折,痛并快乐!)在这里总结一下自学Python遇到的难点和重点,分享码过的代码和要点总结,希望能够给初学者一点启示和鼓励,同时愿意结交更多大神交流有助提升自己的水平。

今天分享如何使用Plotly绘制一种非常实用和美观的图表--环形占比关系图表,有的时候一个数据集合往往有几层维度递进关系,比如:世界-大洲-国家-城市;生物-动物-哺乳类动物-人类;交通工具-陆地运输工具-铁路运输-高铁等。如何展示多个文本维度关系的同时,也能反映不同数据占比关系呢?接下来还是以Plotly内置的世界人口数据集为案例进行演示:

1.调用2002年的世界人口数据作为总样本,抽取几大洲数据集合,方便后续制图和演示:

下面利用Sunburst函数做一个自定义作图函数,方便随时调用出图:

2.编写自定义作图函数(人口和寿命)共有三个参数,X为数据集本身,Y参数为取数值部分,Z参数为图表名字:

def Get_Sunfurst_Pop_Life(x,y,z):    fig = px.sunburst(x, path=['continent','country'],values=y,color='lifeExp',color_continuous_scale='RdBu')    fig.update_layout(title_text=z)    return fig.show()

该作图函数也能展示寿命情况,以颜色渐变的形式呈现,下面以亚洲数据为例来看看结果:

可以清楚看到中国,印度和印度尼西亚人口总数是TOP3,在人均寿命维度看日本是最高的,用鼠标点击不同色块就能显示对应的数值,是不是非常直观方便!!!!

3.使用作图函数(人口和寿命)来套用非洲数据集,并调整一下颜色风格:

# Get_Sunfurst_Pop_Life(x,y,z):    fig = px.sunburst(x, path=['continent','country'],values=y,color='lifeExp',color_continuous_scale='Spectral')    fig.update_layout(title_text=z)    return fig.show()

生成结果如下:

从3点钟方向逆时针旋转看到非洲人口前三的国家分别是:尼日利亚,埃及和埃塞俄比亚,寿命较高的国家有埃及和阿尔及利亚,一目了然有木有!!!!

4.生成作图函数(人口和人均GDP)来套用欧洲数据集:

def Get_Sunfurst_Pop_Gdp(x,y,z):    fig = px.sunburst(x, path=['continent','country'],values=y,color='gdpPercap',color_continuous_scale='PiYG')    fig.update_layout(title_text=z)    return fig.show()

这里把人均GDP维度以颜色渐变形式来同时观察,生成结果如下:

前三欧洲人口大国是德国,土耳其和法国,土耳其的经济实力还差点意思,北欧国家真富裕!!!感觉是不是有点专业的味道???

5.使用作图函数(人口和人均GDP)来套用美洲数据集,并调整颜色风格:

def Get_Sunfurst_Pop_Gdp(x,y,z):    fig = px.sunburst(x, path=['continent','country'],values=y,color='gdpPercap',color_continuous_scale='Picnic')    fig.update_layout(title_text=z)    return fig.show()

生成结果如下:

美国一家独大,在人口和经济实力两个维度遥遥领先,美洲其他国家只能望尘莫及,玩图玩到这里是不是感觉到非常爽快!!最后直接把所有国家数据放进去看看吧!!

6.使用作图函数(人口和人均GDP)来套用全球数据集,并调整颜色风格:

def Get_Sunfurst_Pop_Gdp(x,y,z):    fig = px.sunburst(x, path=['continent','country'],values=y,color='gdpPercap',color_continuous_scale='PRGn')    fig.update_layout(title_text=z)    return fig.show()

生成结果如下:

可以看到亚洲人口数量占全球最大份额,富裕程度整体较高的国家主要集中在欧洲,大家看到这里也赶紧动手试试吧!!!

代码汇总如下:

import matplotlib.pyplot as pltimport plotly.express as pxdf = px.data.gapminder().query("year==2002")display(df.head())df_Europe = df[df["continent"]=="Europe"]df_Asia = df[df["continent"]=="Asia"]df_Americas = df[df["continent"]=="Americas"]df_Africa = df[df["continent"]=="Africa"]display(df_Europe.head())def Get_Sunfurst_Pop_Life(x,y,z):    fig = px.sunburst(x, path=['continent','country'],values=y,color='lifeExp',color_continuous_scale='RdBu')    fig.update_layout(title_text=z)    return fig.show()Get_Sunfurst_Pop_Life(df_Asia,df_Asia["pop"],"亚洲国家人口数量和寿命环形关系图")#  Get_Sunfurst_Pop_Life(x,y,z):    fig = px.sunburst(x, path=['continent','country'],values=y,color='lifeExp',color_continuous_scale='Spectral')    fig.update_layout(title_text=z)    return fig.show()    Get_Sunfurst_Pop_Life(df_Africa,df_Africa["pop"],"非洲国家人口数量和寿命环形关系图") def Get_Sunfurst_Pop_Gdp(x,y,z):    fig = px.sunburst(x, path=['continent','country'],values=y,color='gdpPercap',color_continuous_scale='PiYG')    fig.update_layout(title_text=z)    return fig.show()Get_Sunfurst_Pop_Gdp(df_Europe,df_Europe["pop"],"欧洲国家人口数量和人均GDP收入环形关系图")def Get_Sunfurst_Pop_Gdp(x,y,z):    fig = px.sunburst(x, path=['continent','country'],values=y,color='gdpPercap',color_continuous_scale='Picnic')    fig.update_layout(title_text=z)    return fig.show()    Get_Sunfurst_Pop_Gdp(df_Americas,df_Americas["pop"],"美洲国家人口数量和人均GDP收入环形关系图") def Get_Sunfurst_Pop_Gdp(x,y,z):    fig = px.sunburst(x, path=['continent','country'],values=y,color='gdpPercap',color_continuous_scale='PRGn')    fig.update_layout(title_text=z)    return fig.show()    Get_Sunfurst_Pop_Gdp(df,df["pop"],"全球国家人口数量和人均GDP收入环形关系图") 

END

我为人人,人人为我!!欢迎大家关注,点赞和转发!!!

~~人生不是赛场,梦想不容退场~~不断努力学习蜕变出一个更好的自己,不断分享学习路上的收获和感悟帮助他人成就自己!!!

标签: #python绘制关系图