You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Plotly Express绘制长格式DataFrame的指定子集数据?

在Plotly Express中筛选长格式DataFrame数据绘图的替代方法

除了创建DataFrame子集的方式,还有两种更灵活的方法可以实现长格式数据的指定筛选绘图:

方法1:直接在绘图函数中筛选数据(无需新建DataFrame)

不用单独创建新的DataFrame变量,直接在调用Plotly Express函数时传入筛选后的数据集,代码更紧凑简洁:

import pandas as pd
import plotly.express as px

df = px.data.gapminder().query("continent=='Europe'")
countries = ['France', 'Spain', 'Italy', 'Germany']

# 方式1:用布尔索引筛选
fig2 = px.line(df[df['country'].isin(countries)], 
               x='year', y='pop', color='country',
               title="Some Countries in Europe")
fig2.show()

# 方式2:用query方法更直观
fig2 = px.line(df.query("country in @countries"), 
               x='year', y='pop', color='country',
               title="Some Countries in Europe")
fig2.show()

方法2:先绘制全量数据,再隐藏不需要的轨迹

如果需要保留全量数据的交互能力(比如后续通过图例切换显示其他国家),可以先绘制所有数据,再通过update_traces隐藏目标外的轨迹:

import pandas as pd
import plotly.express as px

df = px.data.gapminder().query("continent=='Europe'")
countries = ['France', 'Spain', 'Italy', 'Germany']

# 先绘制所有国家的曲线
fig2 = px.line(df, x='year', y='pop', color='country',
               title="Some Countries in Europe")

# 隐藏不在目标列表中的轨迹
fig2.update_traces(visible=False, selector=lambda trace: trace.name not in countries)
# 确保目标国家的轨迹可见
for country in countries:
    fig2.update_traces(visible=True, selector=lambda trace: trace.name == country)

fig2.show()

两种方法各有适用场景:第一种适合只需要展示特定数据的场景,代码更简洁;第二种适合需要保留全量数据、支持交互切换的场景。

内容的提问来源于stack exchange,提问作者user44627

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 17:50:29