【发布时间】:2021-05-19 07:15:57
【问题描述】:
我创建了一个箱形图。然后我想画一条线来代表每个箱线图的平均值。我正在处理不覆盖的问题。线图从比箱线图更早的点开始:
红线应该再移动一点。我的代码:
import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib qt
my_list=[]
label=[]
filenames = [f for f in sorted(os.listdir('.')) if f.endswith('.dat')]
my_mean = []
for filename in filenames:
# df = pd.read_csv('fras2009_flat_r9_parameters.dat', sep="\s+", header=None)
df=pd.read_csv(filename,sep="\s+", header=None)
beta = df[4]
beta = beta.drop(beta.index[0:100])
beta_1 = pd.to_numeric(beta, errors='coerce')
my_list.append(beta_1)
mean = beta_1.mean()
my_mean.append(mean)
# mean.index = np.arange(1,len(mean)+1)
#label.append(filename)
labels = ['C_r 03','C_r 05','C_r 0.1','C_r 0.2','C_r 0.5','C_r 1','C_r 2','Unconfined']
plt.xticks(np.arange(len(label)),label)
plt.boxplot(my_list,labels=labels)
# _, ax = plt.subplots()
# # mean.plot(ax=ax)
plt.plot(my_mean,color='r')
【问题讨论】:
-
plt.plot(np.arange(len(my_mean))+1, my_mean, color='r')和plt.xticks(np.arange(len(label))+1, label)也应该让线图从位置1开始,就像箱线图一样。注意plt.plot应该早于plt.xticks被调用。如果您的plt.boxplot晚于plt.plot,则标签将通过箱线图设置,因此无需再次设置。 -
@JohanC 成功了,我应该自己回答我的问题吗?为了不被堆栈倒下
-
供将来参考:如果您清理代码并提供一个最低限度的工作示例,这将真正有助于重现性。其中大部分与问题无关。
标签: python pandas numpy matplotlib