一份数据,6种高级画法!Plotly又秀了一把
针对同一份数据,很多时候我们有不同的图形来进行数据的展示。今天Peter带领大家来体会下不同图表的可视化表现能力,同时感受下Plotly的强大~最终会从6种不同的图形来展示:
- 柱状图
- 水平柱状图
- 饼图
- 旭日图
- 桑基图
- 矩形树状图
数据
数据介绍
这是一份模拟的数据。假设小明同学有这样的一份月度消费数据,体现在衣食住行4个方面。
为了后面的数据进一步处理的方便和绘图,我们把上面的原始数据稍加处理,变成了下面的样子,有三个不同的字段:一级、二级、金额。后面我们也会在pandas中导入这份处理后的数据。
数据导入
在pandas中导入数据,查看前5行:
我们增加一个新的字段:根节点
图1:柱状图
直接使用plotly_express快速绘制柱状图
1 | fig = px.bar(df,x="二级",y="金额",color="一级",text="金额") |
我们还可以采用堆叠stack的形式:
1 | # 我们采用堆叠的形式 |
图2:水平柱状图
1 | fig = px.bar( |
图3:饼图
1 | fig = px.pie(df,names="二级",values="金额") |
改成显示数值而不是比例的饼图:
图4:旭日图
1、使用plotly_express绘制的初级版本的旭日图,是没有数据显示的
1 | fig = px.sunburst(df,path=["根节点","一级","二级"],values="金额") |
2、使用plotly_graph_objects绘制的旭日图
我们需要先把数据进行处理下:
绘图代码如下:
1 | import plotly.graph_objects as go |
图5:桑基图
为了绘制桑基图,数据还需要进行处理:
1、修改属性名称
2、合并数据
3、生成父类和子类的标签
1 | labels = list((set(df3["父类"].tolist() + df3["子类"].tolist()))) |
4、生成父类、子类的属性字段
5、绘图代码
1 | import plotly.graph_objects as go |
图6:矩形树状图
1、基于Plotly_express绘制的桑基图
1 | fig = px.treemap( |
2、基于plotly_graph_objects绘制
一般情形下基于plotly_graph_objects绘制图形会有更多的参数选项
1 | import plotly.graph_objects as go |
我们采用了6种不同类型的精美图形来展示这份数据,你觉得哪个更适合展示这份数据?请选择😊