如何使用matplotlib正确绘制数据?

时间:2019-01-04 17:26:57

标签: python-2.7 matplotlib bar-chart

我有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()

输出为:

enter image description here

这是错误的数据,条形图不符合我的均值的实际值,我也不知道为什么。有人可以发现我的代码有什么问题吗?

1 个答案:

答案 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']))

,其他两个列表也是如此。

enter image description here