Plotly Python箱线图自定义X轴标签方法求助(新手)
嘿,作为Plotly新手,要给箱线图加自定义X轴标签其实很简单,我结合你的代码片段给你两种实用方案!
方法一:用Plotly Express(推荐,代码更简洁)
Plotly Express的box()函数对新手友好,能快速实现自定义X轴标签。假设你的x_label数组是对应每组箱线的名称(比如['实验组1', '实验组2']),我们可以先把数据整理成适合Express的格式,再生成图表:
import plotly.express as px import numpy as np # 你的原始数据(补全你省略的部分) atn_time_1_1 = np.array([22,31,71,74,17,22,23,51,39]) atn_time_1_2 = np.array([27,30,20,40,29,35,22,45,32]) # 你的X轴标签数组 x_label = ['实验组1', '实验组2'] # 把数据转换成Express需要的长格式 data = [] for label, time_data in zip(x_label, [atn_time_1_1, atn_time_1_2]): for time in time_data: data.append({'分组': label, '响应时间': time}) # 生成箱线图 fig = px.box(data, x='分组', y='响应时间') # 可选:设置X轴的整体标题(不是每个分组标签) fig.update_layout(xaxis_title='实验组别') # 本地显示图表 fig.show() # 如果要上传到Plotly云端(对应你设置的credentials) # import plotly.plotly as py # py.plot(fig, filename='custom-x-label-boxplot')
方法二:用Graph Objects(兼容你现有代码风格)
如果你习惯用低阶的Plotly接口(和你代码里的plotly.plotly兼容),可以手动创建箱线轨迹,再通过tickvals和ticktext绑定自定义标签:
import plotly.graph_objects as go import numpy as np import plotly.plotly as py # 你的数据 atn_time_1_1 = np.array([22,31,71,74,17,22,23,51,39]) atn_time_1_2 = np.array([27,30,20,40,29,35,22,45,32]) x_label = ['实验组1', '实验组2'] # 创建空图表并添加箱线轨迹 fig = go.Figure() # 用数字占位X轴位置(0对应第一组,1对应第二组) fig.add_trace(go.Box(y=atn_time_1_1, x=[0])) fig.add_trace(go.Box(y=atn_time_1_2, x=[1])) # 设置X轴自定义标签:tickvals对应轨迹的X位置,ticktext是你的标签 fig.update_layout( xaxis=dict( tickvals=[0, 1], ticktext=x_label, title='实验组别' # 可选:设置X轴整体标题 ) ) # 显示或上传图表 fig.show() # py.plot(fig, filename='custom-x-axis-boxplot')
几个关键注意点
- 确保
x_label的长度和你的箱线图组数完全一致,比如有3组数据,标签数组就要有3个元素 - 如果你的
x_label是对应单个数据点的标签(而非分组),只需要调整tickvals为数据点的原始X值即可 - 旧版Plotly(你代码里的
plotly.tools.set_credentials_file)完全兼容上面两种方案
内容的提问来源于stack exchange,提问作者Venkat kamal
相关产品推荐
相关产品推荐

