介绍
plotly是一个易于使用,功能强大的python绘图库,用于构建可交互式的图表(可以自行运行后使用鼠标拖拽图片试试),本系列文章将介绍plotly绘制各种类型图的方法,本文将介绍——条形图
条形图
基础条形图
代码解释
data_canada = px.data.gapminder().query("country == 'Canada'")
这一行代码首先从Plotly库提供的gapminder数据集中筛选出与加拿大相关的数据。gapminder数据集包含了多个国家多年的经济和健康指标。使用.query()方法和条件字符串"country == ‘Canada’"来选择数据集中所有country列值为’Canada’(加拿大)的行,结果存储在变量data_canada中。fig = px.bar(data_canada, x='year', y='pop')
使用px.bar()函数创建一个条形图。data_canada是筛选后的数据集,x='year’指定了横轴使用数据集中的year列,即年份,y='pop’指定了纵轴使用数据集中的pop列,即人口数量。这个条形图将展示加拿大人口在不同年份的变化情况。
import plotly.express as px
data_canada = px.data.gapminder().query("country == 'Canada'")
fig = px.bar(data_canada, x='year', y='pop')
fig.show()
圆润条形图
代码解释
-
df = data.medals_wide()
这一行代码调用了一个函数(可能是一个自定义函数或者来自某个模块的函数),该函数返回了一个DataFrame df,其中包含了国家(nation)和它们分别获得的金牌(gold)、银牌(silver)和铜牌(bronze)的数量。 -
fig = go.Figure()
这一行代码创建了一个Plotly的Figure对象,这个对象将用来存储和展示数据以及图表的布局设置。go.Figure是Plotly库中用于创建图表的起点。
data=[ … ] -
在Figure对象中,data参数是一个列表,包含了图表的数据层。在这个例子中,列表中包含了三个go.Bar对象,每个对象代表一种奖牌类型(金、银、铜)的数据。
-
go.Bar(x=df.nation, y=df.gold, name="Gold")
这是列表中的第一个go.Bar对象,它创建了一个条形图来表示金牌数据。x参数指定了条形图的横轴数据(国家名称),y参数指定了纵轴数据(金牌数量),name参数为这个数据层设置了名称(“Gold”),这将在图例中显示。 -
go.Bar(x=df.nation, y=df.silver, name="Silver")
类似于上面的go.Bar对象,这个对象用于表示银牌数据。 -
go.Bar(x=df.nation, y=df.bronze, name="Bronze")
同样,这个对象用于表示铜牌数据。 -
layout=dict(barcornerradius=15)
,
layout参数是一个字典,用于设置图表的布局属性。在这个例子中,barcornerradius=15设置了条形图角落的圆角半径为15像素,这会让条形看起来更加圆润。
import plotly.graph_objects as go
from plotly import data
df = data.medals_wide()
fig = go.Figure(
data=[
go.Bar(x=df.nation, y=df.gold, name="Gold"),
go.Bar(x=df.nation, y=df.silver, name="Silver"),
go.Bar(x=df.nation, y=df.bronze, name="Bronze"),
],
layout=dict(
barcornerradius=15,
),
)
fig.show()
彩色样式条形图
代码解释
-
定义年份列表 years:
years 是一个包含从1995年到2012年的年份的列表。
创建一个空的 Figure 对象: -
fig = go.Figure()
创建了一个Plotly的Figure对象,用于存储图表的数据和布局设置。
向 Figure 对象添加两个数据层(Trace):
第一个 Trace 使用 go.Bar 创建了一个条形图,表示“Rest of world”的塑料废料出口量。x 参数设置了横轴为年份列表 years,y 参数设置了纵轴为对应的出口量数据,name 参数为数据层设置了名称,并使用 marker_color 设置了条形的颜色。
第二个 Trace 同样使用 go.Bar 创建了一个条形图,表示“China”的塑料废料出口量,设置了相同的参数,但有不同的出口量数据和条形颜色。
更新 Figure 的布局(update_layout): -
title=‘US Export of Plastic Scrap’ 设置了图表的标题。
xaxis_tickfont_size=14 和 yaxis.tickfont_size=14 分别设置了横轴刻度标签和纵轴刻度标签的字体大小。
yaxis.title=‘USD (millions)’ 和 yaxis.titlefont_size=16 设置了纵轴标题及其字体大小。
legend 字典设置了图例的位置、背景颜色和边框颜色。
barmode=‘group’ 设置了条形图的模式为分组堆叠,即相同位置的条形堆叠在一起。
bargap=0.15 设置了相邻位置坐标的条形之间的间隙。
bargroupgap=0.1 设置了同一位置坐标的条形之间的间隙。
import plotly.graph_objects as go
years = [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012]
fig = go.Figure()
fig.add_trace(go.Bar(x=years,
y=[219, 146, 112, 127, 124, 180, 236, 207, 236, 263,
350, 430, 474, 526, 488, 537, 500, 439],
name='Rest of world',
marker_color='rgb(55, 83, 109)'
))
fig.add_trace(go.Bar(x=years,
y=[16, 13, 10, 11, 28, 37, 43, 55, 56, 88, 105, 156, 270,
299, 340, 403, 549, 499],
name='China',
marker_color='rgb(26, 118, 255)'
))
fig.update_layout(
title='US Export of Plastic Scrap',
xaxis_tickfont_size=14,
yaxis=dict(
title='USD (millions)',
titlefont_size=16,
tickfont_size=14,
),
legend=dict(
x=0,
y=1.0,
bgcolor='rgba(255, 255, 255, 0)',
bordercolor='rgba(255, 255, 255, 0)'
),
barmode='group',
bargap=0.15, # gap between bars of adjacent location coordinates.
bargroupgap=0.1 # gap between bars of the same location coordinate.
)
fig.show()