首页 > 解决方案 > 如何使用 matplotlib 正确绘制数据?

问题描述

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

输出是:

在此处输入图像描述

这是错误的数据,条形不符合我的实际值,我不知道为什么。谁能发现我的代码有什么问题?

标签: python-2.7matplotlibbar-chart

解决方案


问题是您在所有三个列表 ( ) 中的平均值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']))

例如,使用列表理解的替代方法是

FFA_mean = ['0.511', '0.704', '0.922', '0.764', '1.084']
FFA_mean = [float(i) for i in FFA_mean]

其他两个列表也是如此。

在此处输入图像描述


推荐阅读