使用Seaborn lineplot绘制Numpy数组时如何让X轴刻度从1开始
解决Seaborn lineplot X轴刻度与数组元素错位的问题
先构造示例数据并计算累积和:
import numpy as np # 构造原始数组 arr = np.array([0.17, 0.15, 0.13, 0.12, 0.07, 0.06, 0.05, 0.05, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.02]) # 计算累积和 cum_arr = np.cumsum(arr)
原绘制代码中,sns.lineplot(data=cum_arr)默认会用数组的0起始索引作为X轴值,而手动设置的X轴刻度是从1到15,导致刻度1对应索引1的元素(0.32),而非索引0的第一个元素(0.17)。
要让X轴刻度1对应cum_arr的第一个元素,只需在lineplot中显式指定x参数为自定义的x_range,让每个y值与对应的x刻度一一绑定:
修改后的完整代码:
import matplotlib.pyplot as plt import seaborn as sns x_range = [x for x in range(1, len(cum_arr) +1)] # 显式关联x刻度与y值,避免索引错位 ax = sns.lineplot(x=x_range, y=cum_arr) ax.set_xlim(1, 15) ax.set_ylim(0, 1.1) ax.set_xticks(x_range) plt.grid() plt.show()
修改后,X轴刻度1会对应cum_arr的第一个元素0.17,后续刻度也会依次匹配对应的数组元素。
内容的提问来源于stack exchange,提问作者equanimity
相关产品推荐
相关产品推荐

