我创建了一个箱形图。然后我想画一条线,代表每个箱线图的平均值。我正在处理不重叠的问题。线图从早于箱线图的点开始:
红线应再移动一点。我的代码:
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')
默认情况下,框线图从索引1
。这可以通过使用进行更改positions=...
。或者,您可以仅将线图再开始一个位置。如果在线图之后调用箱线图,则没有可以显式设置标签的位置。
import numpy as np
import matplotlib.pyplot as plt
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']
my_list = [np.random.uniform(10, 30, 5) for _ in labels]
my_mean = [values.mean() for values in my_list]
plt.plot(np.arange(len(my_mean)) + 1, my_mean, color='r')
plt.boxplot(my_list, labels=labels)
plt.show()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句