使用matplotlib中的标记绘制序数数据

时间:2015-06-20 14:23:53

标签: python matplotlib

我有一些数据,我有实验和模拟值,数据不是真正连续而没有引入新的定义(我不想做)所以我希望通常在一个散点类型图,每个集合有两个标记,然后在X轴上标记每个集合。

基本上我无法弄清楚如何使用matplotlib(我更喜欢使用它来与我提供其他数据的方式一致)。

数据示例如下:

1cm square: 0.501, 0.505

1cm圈 0.450, 0.448

1cm X 2cm rect: 0.665, 0.641

1 个答案:

答案 0 :(得分:3)

我可能会误解这个问题,但听起来你似乎想要这些内容:

import matplotlib.pyplot as plt

# Using this layout to make the grouping clear
data = [('apples', [0.1, 0.25]),
        ('oranges', [0.6, 0.35]),
        ('pears', [0.1, 0.18]),
        ('bananas', [0.7, 0.98]),
        ('peaches', [0.6, 0.48])]

# Reorganize our data a bit
names = [item[0] for item in data]
predicted = [item[1][0] for item in data]
observed = [item[1][1] for item in data]

# It might make more sense to use a bar chart in this case.
# You could also use `ax.scatter` to plot the data instead of `ax.plot`
fig, ax = plt.subplots()
ax.plot(predicted, color='lightblue', marker='o', linestyle='none',
        markersize=12, label='Predicted')
ax.plot(observed, color='red', marker='s', linestyle='none',
        markersize=12, label='Observed')

ax.margins(0.05)
ax.set(xticks=range(len(names)), xticklabels=names, ylabel='Meaningless')
ax.legend(loc='best', numpoints=1)
ax.grid(axis='x')

plt.show()

enter image description here

关键部分是设置xticks和xticklabels以对应您的数据" groups"。您可以用其他几种方式绘制数据(例如条形图等),但在每种情况下使用xticks / labels都是相同的。