4.3. 基本图表#
import plotly.graph_objects as go
import plotly.io as pio
pio.renderers.default = "notebook"
在 Matplotlib 章节中,我们介绍了散点图、柱状条形图、饼图、柱状图、箱线图等基本图表的作图方法,它们在 Plotly 库中也有对应的 trace。本节将介绍几类常见的图。
散点图#
go.Scatter
是 Plotly 中用于创建散点图(Scatter)的类。以下是一些常用的参数:
x
: 用于指定数据点在 x 轴上的坐标,可以是单个值、列表或数组。y
: 用于指定数据点在 y 轴上的坐标,可以是单个值、列表或数组。mode
: 定义散点图的模式,常见的包括 ‘markers’(仅显示标记)、’lines’(仅显示线)、’lines+markers’(同时显示线和标记)等,因此该类也可以作出折线图。name
: 为 trace 指定一个名称,用于图例等,默认名称为“trace x”,x从0开始计数。marker
: 一个字典,包含有关标记的属性,例如颜色、大小等。line
: 一个字典,包含有关线的属性,例如颜色、宽度等。
例:向图形对象添加一个 mode 为 ‘lines+markers’ 的散点图。
fig = go.Figure()
fig.add_trace(go.Scatter(x=[1, 2, 3, 4], y=[10, 11, 12, 13], mode='lines+markers'))
fig.show()
例:在上图基础上再添加一个 trace,命名为 Scatter Plot,用字典传入 marker
参数。
x_values = [1, 2, 3, 4]
y_values = [8, 9, 10, 11]
trace = go.Scatter(
x=x_values,
y=y_values,
mode='markers+lines',
name='Scatter Plot',
marker=dict(
color='blue',
size=10,
symbol='circle'
),
line=dict(
color='red',
width=2
)
)
fig.add_trace(trace)
fig.show()
条形图#
go.Bar
是 Plotly 中用于创建条形图(Bar)的类。以下是一些常用的参数:
x
: 用于指定条形的位置,可以是单个值、列表或数组。每个位置上都会绘制一条条形。y
: 用于指定条形的高度,可以是单个值、列表或数组。每个高度值对应一个位置上的条形。name
: 为 trace 指定一个名称,用于图例等。orientation
: 指定条形图的方向,可以是 ‘v’(垂直)或 ‘h’(水平),默认为垂直型条形图。marker
: 一个字典,包含有关条形的属性,例如颜色、透明度等。text
: 用于在条形上显示的文本,可以是单个值、列表或数组;可以用来在图中展示具体的类别。
例:作出条形图,条形的颜色为蓝色,同时在每个条形上显示对应的 A、B、C、D 类别。
x_values = ["A","B","C","D"]
y_values = [10, 11, 12, 13]
trace = go.Bar(
x=x_values,
y=y_values,
name='Bar Chart',
orientation='v',
marker=dict(
color='blue',
opacity=0.7
),
text=['A', 'B', 'C', 'D']
)
fig = go.Figure(trace)
fig.show()
饼图#
go.Pie
是 Plotly 中用于创建饼图(Pie)的类。以下是一些常用的参数:
labels
: 用于指定每个扇形的标签,可以是单个值、列表或数组。values
: 用于指定每个扇形的数值,表示占比或数量,可以是单个值、列表或数组。textinfo
: 用于控制在每个扇形上显示的文本信息,例如百分比、数值等。hoverinfo
: 指定饼图上鼠标悬停时显示的信息。hole
: 设置饼图中心的空洞大小,取值范围为 [0, 1],默认为 0,通过调整该参数,可以作出环形图。name
: 为 trace 指定一个名称,用于图例等。marker
: 一个字典,包含有关扇形的属性,例如颜色、透明度等。
例:对给定的数据作饼图。
控制饼图中每个部分上显示的文本信息,这里设置为显示百分比和标签。
设置悬停(hover)信息,当鼠标悬停在饼图的某个部分时显示的信息,这里设置为显示标签和百分比。
控制饼图中间的空洞的大小,取值范围为 [0, 1],这里设置为 0.3,表示空洞占整个饼图的 30%(即变为环形图)。
配置饼图的颜色和边界线样式:在
marker
中用colors
参数包含四种颜色的列表,分别对应饼图的四个部分;line
参数用字典,定义边界线的样式,包括颜色和宽度。这里设置为白色边界线,宽度为 2。
## 定义数据
## 类别
labels = ['Category A', 'Category B', 'Category C', 'Category D']
## 数值
values = [40, 30, 20, 10]
trace = go.Pie(
labels=labels,
values=values,
textinfo='percent+label',
hoverinfo='label+percent',
hole=0.3,
name='Pie Chart',
marker=dict(
colors=['red', 'green', 'blue', 'purple'],
line=dict(color='white', width=2)
)
)
fig = go.Figure()
fig.add_trace(trace)
fig.show()
柱状图#
go.Histogram
是 Plotly 中用于创建柱状图(Histogram)的类。以下是一些常用的参数:
x
: 用于指定数据点在 x 轴上的坐标,表示待绘制柱状图的数据,可以是单个值、列表或数组。nbinsx
: 设置柱状图的柱体数量,即柱状图中显示的柱子数量。histnorm
: 用于指定柱状图的归一化方式,可以是 ‘percent’(百分比)、’probability’(概率)等。name
: 为 trace 指定一个名称,用于图例等。orientation
: 设置柱状图的方向,可以是 ‘v’(垂直)或 ‘h’(水平),默认为垂直。opacity
: 设置柱状图的透明度,取值范围为 [0, 1]。marker
: 一个字典,包含有关柱状图的条形的属性,例如颜色、透明度等。
例:对给定一组连续的数据作柱状图,分为5个柱子,整体颜色为蓝色。
import plotly.graph_objects as go
## 数据
data = [1, 2, 2, 3, 3, 3, 4, 4, 5, 5]
trace = go.Histogram(
x=data,
nbinsx=5,
histnorm='percent',
opacity=0.7,
marker=dict(
color='blue'
)
)
fig = go.Figure()
fig.add_trace(trace)
fig.show()
箱线图#
箱线图能够有效地反映数据的中位数、分位数范围、异常值等统计信息,有助于观察数据的分布和离群值情况。go.Box
是 Plotly 中用于创建箱线图(Box)的类。以下是一些常用的参数:
y
: 用于指定数据点在 y 轴上的坐标,表示待绘制箱线图的数据,可以是单个值、列表或数组。boxpoints
: 控制箱线图上显示的数据点,可以是 ‘all’(所有数据点)、’outliers’(离群值)、’all’ + ‘outliers’ 等。不设置该参数时,则不显示具体的点位。name
: 为 trace 指定一个名称,用于图例等。boxmean
: 设置是否在箱体内显示均值线。marker
: 一个字典,包含有关具体点的属性,例如颜色、透明度等。line
: 一个字典,包含有关中位线和边缘线的属性,例如颜色、宽度等,也控制了箱体颜色。
例:对给定的一组连续数据作箱线图,展示所有数据点为散点,显示均值线,数据点颜色为绿色,异常值颜色为红色,并使用蓝色线条描绘。
data = [1, 2, 2, 3, 3, 3, 4, 4, 5, 5]
trace = go.Box(
y=data,
boxpoints='all',
boxmean=True,
name='boxplot',
marker=dict(
color='green',
outliercolor='red'
),
line=dict(
color='blue'
)
)
fig = go.Figure()
fig.add_trace(trace)
fig.show()