绘制来自不同变量的值

时间:2017-11-30 16:57:17

标签: python matplotlib plot

抱歉,如果这是一个愚蠢的问题,但我无法找到问题的解决方案。 我想要绘制一些点,每个点对应一个变量。我的问题是:如何在同一个图中用每种颜色绘制每个点,并绘制图例。

这是我到目前为止的代码:

import matplotlib.patches as mpatches
import matplotlib.pyplot as plt

function=['a', 'b', 'c', 'd', 'e']
acc_scores = [0.879, 0.748, 0.984, 0.944, 0.940]

fig, ax = plt.subplots()
colors= ['b', 'r', 'g', 'c', 'y'] #Colors I wanted to use for each data point
plt.plot([1,2,3,4,5], acc_scores, 'ro')
plt.axis([0, 6, 0.5, 1])
ax.set_xlabel('Functions', size=18)
ax.set_ylabel('Accuracy', size=18)
plt.show()

这段代码给了我点数,但颜色都一样。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您将所有数据绘制为一个线条图,并且它们都是相同的颜色,因为您指定了ro。如果您希望每个点都不同,您可以遍历每个点并单独绘制它。 label参数有助于构建图例。

试试这个:

import matplotlib.patches as mpatches
import matplotlib.pyplot as plt

function=['a', 'b', 'c', 'd', 'e']
acc_scores = [0.879, 0.748, 0.984, 0.944, 0.940]

fig, ax = plt.subplots()
colors= ['b', 'r', 'g', 'c', 'y'] #Colors I wanted to use for each data point
for x, y, c, f in zip([1,2,3,4,5], acc_scores, colors, function):
    plt.scatter(x, y, c=c, label=f)

plt.axis([0, 6, 0.5, 1])
ax.set_xlabel('Functions', size=18)
ax.set_ylabel('Accuracy', size=18)
plt.legend()
plt.show()

输出

Example Output