Pandas绘制箱线图与折线图,折线起始位置异常问题求助
解决折线从原点出发的箱线图+折线图问题
我懂你想要的效果:折线从(0,0)原点开始,然后衔接每个箱线图对应的均值点对吧?咱们可以通过以下几步调整你的现有代码:
步骤1:构造带原点的均值数据
首先得给均值系列手动加一个(0,0)的起点数据,这样折线绘图时就会从原点开始。假设你的DataFrame列名是k_e的不同取值,代码如下:
import pandas as pd import matplotlib.pyplot as plt # 确保数据是浮点型(你的原有代码) df = df.astype(float) # 创建带原点的均值序列:先加(0,0),再拼接原数据的均值 origin_mean = pd.Series([0], index=[0]) full_mean_series = pd.concat([origin_mean, df.mean()])
步骤2:对齐折线与箱线图的x轴
箱线图默认的x轴位置是从1开始(对应第一列),而我们添加的原点x位置是0,所以要手动指定箱线图的位置,让它和折线的x轴完美匹配:
_, ax = plt.subplots() # 绘制折线:用带原点的均值序列,自动从(0,0)出发 full_mean_series.plot(ax=ax, marker='o', label='Mean') # 绘制箱线图:指定每个箱线的x位置为1到列数,和折线的x轴对齐 df.boxplot(showfliers=False, ax=ax, positions=range(1, len(df.columns)+1)) # 调整x轴刻度与标签:显示原点和原k_e列名 ax.set_xticks(range(0, len(df.columns)+1)) ax.set_xticklabels([0] + list(df.columns)) # 可选:添加图例、坐标轴标签美化 ax.legend() ax.set_xlabel('k_e') ax.set_ylabel('Value') plt.show()
额外说明
- 如果你的
k_e列名是字符串类型,只需要把ax.set_xticklabels([0] + list(df.columns))里的0换成你想要的原点标签(比如'Origin')就行。 - 用
positions参数固定箱线图的x位置是关键,这样能保证它和折线的x轴刻度完全对应,不会出现错位。
内容的提问来源于stack exchange,提问作者isaacsultan
相关产品推荐
相关产品推荐

