我有3个包含均值的列表:
FFA_mean = ['0.511', '0.704', '0.922', '0.764', '1.084']
LG_mean = ['0.018', '0.001', '-0.003', '-0.005', '-0.004']
PPA_mean = ['1.161', '1.000', '0.875', '0.785', '0.336']
及其各自的置信区间:
FFA_ci = [0.245, 0.24892, 0.3038, 0.22736, 0.24304]
LG_ci = [0.19992, 0.21952, 0.147, 0.1666, 0.1862]
PPA_ci = [0.27440000000000003, 0.28615999999999997, 0.34496, 0.30968, 0.1862]
这是我用来绘制此数据的代码:
import matplotlib.pyplot as plt
barWidth = 0.3
n= 5
r1 = np.arange(n)
plt.bar(r1, FFA_mean, width = barWidth, color = 'pink', label='FFA')
plt.bar(r1+barWidth, LG_mean, width = barWidth, color = 'orange', label='Lingual Gyrus')
plt.bar(r1+barWidth*2, PPA_mean, width = barWidth, color = 'cyan', label='PPA')
plt.xticks([r + barWidth for r in range(len(FFA_mean))], ['House', 'Chair', 'Shoe', 'Bottle', 'Face'])
plt.ylabel('Percentage BOLD Signal Change')
plt.xlabel('Stimuli Class')
plt.title('FEATQuery Analysis for FFA, Lingual Gyrus and PPA')
plt.legend()
plt.show()
输出为:
这是错误的数据,条形图不符合我的均值的实际值,我也不知道为什么。有人可以发现我的代码有什么问题吗?
答案 0 :(得分:0)
问题在于,所有三个列表(df = pd.concat([X, y], axis=1)
df = df.sample(frac=1).reset_index(drop=True)
)中的平均值都是字符串类型。您需要将它们强制转换为浮点类型,以获取正确的值顺序。一种方法是使用FFA_mean, LG_mean, PPA_mean
函数将所有字符串转换为浮点类型。 map
将返回map
不接受的生成器,因此您将其转换回列表。
plt.bar()
替代例如,使用列表理解
FFA_mean = list(map(float,['0.511', '0.704', '0.922', '0.764', '1.084']))
LG_mean = list(map(float,['0.018', '0.001', '-0.003', '-0.005', '-0.004']))
PPA_mean = list(map(float,['1.161', '1.000', '0.875', '0.785', '0.336']))
,其他两个列表也是如此。