可视化神器Plotly玩转柱状图
本文是可视化神器Plotly绘图的第5篇:重点讲解如何利用Plotly绘制柱状图。柱状图在可视化图中是出现频率非常高的一种图表,能够很直观地展现数据的大小分布情况,在自己的工作中也使用地十分频繁。本文将详细介绍如何制作柱状图和水平柱状图。
前4篇关于Plotly的文章分别是:
导入库
首先还是需要导入我们绘图需要的几个常用库
1 | import pandas as pd |
绘图的时候还是会基于两种方式来实现:
- plotly_express:px
- plotly.graph_objects:go
基于px实现柱状图
基础柱状图
模拟生成一份简单的绘图所需数据
1 | df1 = pd.DataFrame({ |
1 | fig = px.bar(df1,x="name",y="age") |
加上颜色参数color:
1 | fig = px.bar(df1, |
基于长表的分组柱状图
1 | df2 = pd.DataFrame({ |
1 | fig = px.bar(df2, |
基于宽表的分组柱状图
宽表形式主要是指字段很多
1 | df3 = pd.DataFrame({ |
1 | fig = px.bar(df3, |
图表个性设置
1、改变图形的颜色:加上颜色参数
1 | fig = px.bar(df1, |
看下自带数据集中小费的例子:
1 | fig = px.bar(df4, |
2、设置图表的悬停信息:hover_data:
1 | fig = px.bar(df1, |
3、x轴标签倾斜设置
1 | information = pd.DataFrame({ |
默认情况下是水平显示:
1 | fig = px.bar(information,x="days",y="number") |
如果我们加上参数width,height向右显示:
1 | fig = px.bar(information, |
加上xaxis_tickangle,设置倾斜角度:
1 | fig = px.bar(information,x="days",y="number") |
即使我们加上width=600,height=600
还是向左倾斜的:
1 | fig = px.bar(information,x="days",y="number",width=600,height=600) |
柱状图模式设置
柱状图显示模式主要是有4种:
- stack:堆叠
- group:分组
- overlay:覆盖
- relative:相对
1 | fig = px.bar(df4, |
4种不同模式下的显示区别:
多面柱状图
我们以自带的小费数据为例:
1 | fig = px.bar(df4, # 带绘图数据 |
需要注意每个不同的参数表示的含义
基于go实现柱状图
基础柱状图
自建的数据集:
1 | fig = go.Figure( |
分组柱状图
也是可以选择4种不同的柱状图模式:
- stack:堆叠
- group:分组
- overlay:覆盖
- relative:相对
1 | fig = go.Figure(data=[ |
设置文本悬停信息hovertext
1 | name = ['Product A', 'Product B', 'Product C'] |
显示数据信息
显示的模式有4种:
- auto:自动
- inside:内部
- outside:外部
- none:无
1 | name = ['Product A', 'Product B', 'Product C'] |
格式化文本显示模式
1 | import plotly.express as px |
1 | fig = px.bar(gap, |
x轴标签倾斜
1 | import plotly.graph_objects as go |
单个柱状图设置
我们还是自建的数据集:
1 | fig = go.Figure(data=[go.Bar( |
柱状图宽度设置
1 | # 不设置的话,每个柱状图是一样的宽度 |
默认情况下,每个柱子的宽度是相同的:
我们给每个柱子设置不同的宽度:
1 | fig = go.Figure(data=[go.Bar( |
改变柱状图基准位置
1 | import plotly.graph_objects as go |
图例位置和颜色
设置图例的位置和颜色:
1 | import plotly.graph_objects as go |
相对模式relative理解
1 | import plotly.graph_objects as go |
堆叠模式
1 | import plotly.graph_objects as go |
多组共享x轴
1 | import plotly.graph_objects as go |
基于px实现水平柱状图
基础柱状图
需要注意两点:
- x、y轴的数据需要交换
- 添加参数
orientation
1 | df1 = pd.DataFrame({ |
1 | fig = px.bar( |
显示数据信息
1 | fig = px.bar( |
默认文本是显示在内部的,可以进行修改:
1 | # 修改文本位置 |
设置颜色参数
1 | fig = px.bar( |
自定义颜色
1 | fig = px.bar( |
小费案例
多参数个性设置
1 | fig = px.bar( |
基于go实现水平柱状图
基础图形
1 | fig = go.Figure(go.Bar( |
设置颜色和模式
1 | import plotly.graph_objects as go |
4种不同模式的对比:
总结
本文结合自建和Plotly中自带的数据集,详细的介绍了如何基于plotly_express和plotly.graph_objects两种方式来实现不同需求和显示方式的柱状图和水平柱状图,希望对读者朋友有所帮助。