在Python的Plotly中能否通过变量定义X、Y值?如何正确实现?
当然可以用变量定义Trace的X、Y值!
你遇到的图表不显示问题,核心不是「能不能用变量」,而是你给x、y传了嵌套的列表层级,导致Plotly无法正确解析数据~
先分析你的两个场景
场景1的问题:
你写了x=[x_names]和y=[y_ages],相当于把原本的序列又套了一层:x_names是['John', 'Jill', 'Sandy'],[x_names]就变成了[['John', 'Jill', 'Sandy']]- 同理
y=[y_ages]变成[[8,11,10]](另外提一句,原代码里y_ages = 8,11,10是元组,Plotly其实也能识别,但写成列表[8,11,10]更规范)
Plotly的bar trace要求x、y是扁平化的序列(列表/元组),嵌套列表会被当成其他维度的数据,所以图表无法正常显示数值。
场景2能成功的原因:
你直接传入了扁平化的列表x=['jack', 'jill', 'sandy']和y=[8,11,10],符合Plotly对轴数据的要求,所以能正常渲染图表。
正确的变量用法示例
只需要直接把变量赋值给x、y,不要额外加一层方括号就行:
import plotly.offline as pyo # 定义变量(列表/元组都可以) x_names = ['John', 'Jill', 'Sandy'] y_ages = [8, 11, 10] # 直接用变量赋值给trace的x、y trace00 = dict(type='bar', x=x_names, y=y_ages) pyo.iplot([trace00])
这样就能成功绘制出和场景2一样的图表啦!
额外提示
- 变量不仅可以是简单列表,还可以是从其他地方获取的可迭代数据(比如从CSV读取的列数据、数据库查询结果等),完全满足代码复用和动态数据的需求
- 只要保证变量是一维的、元素类型符合轴要求(x轴可以是字符串/数值,y轴一般是数值),Plotly都能正确解析
内容的提问来源于stack exchange,提问作者Kadodo14
相关产品推荐
相关产品推荐

