如何在Python中绘制X轴非均匀间距的图表?Plotly实践遇阻求助
Python实现X轴非均匀间距图表的方法
不管用Matplotlib还是Plotly,核心思路都是放弃默认的类别轴,改用数值轴手动指定每个刻度的位置,以此控制间距。以下是具体实现:
方法一:Matplotlib
直接自定义X轴的数值位置,再替换成对应标签:
import matplotlib.pyplot as plt # 自定义每个刻度的位置(控制间距)和对应的标签 x_pos = [0, 3, 4, 7, 10] x_labels = ["阶段1", "阶段2", "阶段3", "阶段4", "阶段5"] y_data = [20, 45, 30, 60, 50] # 绘制折线/散点 plt.plot(x_pos, y_data, marker='s', linestyle='-') # 设置X轴刻度:位置对应自定义的x_pos,显示文本为x_labels plt.xticks(x_pos, x_labels) plt.xlabel("阶段") plt.ylabel("数值") plt.grid(axis='y', linestyle='--') plt.show()
方法二:Plotly
同样用数值轴自定义位置,避免使用默认的类别轴(类别轴强制均匀间距):
import plotly.graph_objects as go x_pos = [0, 3, 4, 7, 10] x_labels = ["阶段1", "阶段2", "阶段3", "阶段4", "阶段5"] y_data = [20, 45, 30, 60, 50] fig = go.Figure(go.Scatter(x=x_pos, y=y_data, mode='lines+markers')) # 配置X轴:指定刻度位置和对应文本 fig.update_layout( xaxis=dict( tickmode='array', tickvals=x_pos, ticktext=x_labels ), xaxis_title="阶段", yaxis_title="数值" ) fig.show()
你之前用Plotly失败的原因是默认启用了类别轴,所有标签会被自动分配均匀的间距。改成数值轴并手动设置tickvals和ticktext,就能完全控制每个刻度的位置和间距。
内容的提问来源于stack exchange,提问作者Chenyue Ren
相关产品推荐
相关产品推荐

