python-2.7 - 如何使用 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()
输出是:
这是错误的数据,条形不符合我的实际值,我不知道为什么。谁能发现我的代码有什么问题?
解决方案
问题是您在所有三个列表 ( ) 中的平均值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]
其他两个列表也是如此。
推荐阅读
- sql - 将结果汇总到一个联合中
- java - 如何向 Dataframe 添加一些信息?
- entity-framework - 设计 ASP.NET Core Web API 的最佳实践是什么
- dart - 仅在设备上诊断 Flutter MaterialApp 主题运行时更改缓慢的原因
- vbscript - vbscript AscB 中的过程调用或参数无效
- javascript - 如何从数组中删除空格?
- python - 组合表达式中的运算
- firebase - 带有 Firestore 的 StreamController
- sql - 根据参考表中的日期范围获取日期
- python - 在 matplotlib 中更改 3D 绘图的纵横比