Plotly:如何使用 Python 对绘图对象条形图进行颜色编码?
发布日期:2025-05-05 17:40:58 浏览次数:2 分类:精选文章

本文共 3292 字,大约阅读时间需要 10 分钟。

在Python中使用Plotly绘制条形图并设置颜色编码

Plotly 是一个强大的数据可视化工具,尤其在 Python 中表现突出。对于条形图来说,Plotly 提供了灵活的配置选项,其中 marker.color 属性尤为重要。这个属性可以接受一个颜色列表或数值序列,从而实现基于数据值自动分配颜色的功能。本文将详细介绍如何在 Python 中使用 Plotly 实现这一功能。


安装 Plotly 库

在开始之前,确保你已经安装了 Plotly 库。如果尚未安装,可以通过以下命令进行安装:

pip install plotly

导入所需模块

在编写 Python 脚本时,需要导入 plotly.graph_objects 模块,以便使用 Plotly 的功能。

import plotly.graph_objects as go

创建数据

条形图的核心是其数据。以下是一个示例,展示了如何创建 x 轴和 y 轴的数据。假设我们有一个城市名称列表作为 x 轴的数据,对应的空气质量指数作为 y 轴的数据。

cities = ['北京', '上海', '广州', '深圳', '成都']  # 城市名称列表
air_quality_index = [100, 80, 90, 70, 85] # 对应空气质量指数

创建条形图对象

使用 go.Bar() 函数创建一个条形图对象,并设置 x 轴数据、y 轴数据以及颜色编码。

fig = go.Figure(data=[
go.Bar(
x=cities, # x 轴数据,城市名称
y=air_quality_index, # y 轴数据,空气质量指数
marker=dict(color=air_quality_index) # 颜色编码:根据空气质量指数自动分配颜色
)
])

更新布局信息

为了使图表更加清晰,需要更新其布局信息,添加标题和轴标签。

fig.update_layout(
title='城市空气质量指数', # 添加标题
xaxis_title='城市名称', # 设置 x 轴标签
yaxis_title='空气质量指数' # 设置 y 轴标签
)

显示图形

最后,使用 fig.show() 函数将生成的条形图展示出来。

fig.show()

示例代码

以下是一个完整的 Python 脚本示例,展示了如何根据空气质量指数颜色编码绘制条形图。

import plotly.graph_objects as go
# 城市名称列表
cities = ['北京', '上海', '广州', '深圳', '成都']
# 对应空气质量指数
air_quality_index = [100, 80, 90, 70, 85]
# 创建条形图
fig = go.Figure(data=[
go.Bar(
x=cities, # x 轴数据,城市名称
y=air_quality_index, # y 轴数据,空气质量指数
marker=dict(color=air_quality_index) # 颜色编码:根据空气质量指数自动分配颜色
)
])
# 更新布局信息,添加标题和轴标签
fig.update_layout(
title='城市空气质量指数',
xaxis_title='城市名称',
yaxis_title='空气质量指数'
)
# 显示图形
fig.show()

测试用例

由于 Plotly 图形不直接支持单元测试,但你可以通过将代码保存到一个 HTML 文件中并在浏览器中打开来模拟测试。例如,将上述代码保存为 index.html,然后在浏览器中打开查看生成的条形图。


人工智能大模型应用场景

假设你正在开发一个分析空气质量指数的 Web 应用程序,希望用户可以根据城市名称快速查找其对应的空气质量指数。在这种情况下,你可以利用 Plotly 的交互功能,为用户提供一个输入框和一个搜索按钮。当用户输入城市名并点击搜索时,展示该城市的空气质量指数和颜色编码的条形图。


示例代码

以下是一个使用 Dash 框架创建的交互式搜索功能的示例。

import plotly.graph_objects as go
from dash import Dash, Input, Output
import dash_core_components as dcc
import dash_html_components as html
# 创建 Dash 应用程序
app = Dash(__name__)
# 应用程序布局
app.layout = html.Div([
html.Div([
dcc.Input(
id='city-input',
type='text',
placeholder='输入城市名称...'
),
html.Button(
'搜索',
id='search-button'
),
html.Div(
id='output'
)
])
])
@app.callback(
Output('output', 'children'),
[Input('search-button', 'n_clicks'), Input('city-input', 'value')]
)
def update_output(n_clicks, city):
if n_clicks is None:
return []
cities = ['北京', '上海', '广州', '深圳', '成都']
air_quality_index = [100, 80, 90, 70, 85]
city_index = cities.index(city) if city in cities else None
if city_index is not None:
fig = go.Figure(data=[
go.Bar(
x=[city],
y=[air_quality_index[city_index]],
marker=dict(color=[air_quality_index[city_index]])
)
])
fig.update_layout(
title=f'{city}空气质量指数',
xaxis_title='城市名称',
yaxis_title='空气质量指数'
)
return html.Div([dcc.Graph(figure=fig)])
else:
return '未找到该城市的空气质量数据。'
# 运行 Dash 应用程序
if __name__ == '__main__':
app.run_server(debug=True)

以上代码展示了如何在 Dash 框架中创建一个交互式搜索功能。当用户输入城市名称并点击搜索按钮时,程序会根据输入的城市名显示其对应的空气质量指数和颜色编码的条形图。

上一篇:Plotly:如何使用 updatemenus 更新一个特定的跟踪?
下一篇:Plotly:如何使用 plotly.graph_objects 和 plotly.express 定义图形中的颜色?

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2026年05月31日 02时20分36秒