Python-Matplotlib不同y值的不同颜色

Python-Matplotlib不同y值的不同颜色,python,matplotlib,colors,Python,Matplotlib,Colors,我一直在尝试使用matplotlib绘制一些数据。我正在使用: plt.plot(x1Values, y1Values, color='green', linestyle='None', marker='o', markerfacecolor='blue', markersize=4) 这里是一个名称列表,例如: x1Values = ['alice', 'jordan', 'mike'] y1Values = [(2,3),(1,1),(4,5)] y1Values是一

我一直在尝试使用matplotlib绘制一些数据。我正在使用:

plt.plot(x1Values, y1Values, color='green', linestyle='None', 
        marker='o', markerfacecolor='blue', markersize=4)
这里是一个名称列表,例如:

x1Values = ['alice', 'jordan', 'mike']
y1Values = [(2,3),(1,1),(4,5)]
y1Values是一个二进制元组列表,例如:

x1Values = ['alice', 'jordan', 'mike']
y1Values = [(2,3),(1,1),(4,5)]

现在上面提到的plot函数基本上按照预期工作,x轴上的每个值对应两个点,但是plot有点混乱,因为我的实际列表大小是~100。这就是为什么我想避免使用plt.label()函数来标记这些点。标签开始重叠,使图表变得凌乱,有些无用。我想做的是给这些点赋予不同的颜色。例如,在图表上,我希望(alice,2)为绿色,而(alice,3)为红色。同样,(迈克,4)是绿色,(迈克,5)是红色,如果可能的话,(我在这里没有很高的希望,但如果可能的话)我希望重叠点(乔丹,1)和(乔丹,1)是其他颜色,比如说蓝色。但是,如果这是不可能实现的,那就好了,只要其余的都实现了

在发布问题几分钟后,找到了解决方案。将y值分为两个列表并分别绘制,代码如下:

y1Values = [i[0] for i in yValues]
y2Values = [i[1] for i in yValues]
plt.plot(x1Values, y1Values, color='black', linestyle='None', linewidth = 3, 
        marker='o', markerfacecolor='green', markersize=4)
plt.plot(x1Values, y2Values, color='black', linestyle='None', linewidth = 3, 
        marker='o', markerfacecolor='red', markersize=4)

我看到你的答案太晚了,所以我的方法也是:

我认为,一般来说,散点图更适合你的情况。 因为它允许您为每个点单独设置颜色。 下面的实现还将重叠结果绘制为蓝色

from matplotlib import pyplot as plt

x1Values = ['alice', 'jordan', 'mike']
y1Values = [(2,3),(1,1),(4,5)]

xData = []
yData = []
cols = []
for counter, name in enumerate(x1Values):
    #Decide which point gets which color
    if (y1Values[counter][0] > y1Values[counter][1]):
        cols += ['r', 'g']
    elif (y1Values[counter][0] < y1Values[counter][1]):
        cols += ['g', 'r']
    else:
        cols += ['b', 'b']

    #adding names and values to the data for x and y Axes    
    xData += [name, name]
    yData += y1Values[counter]


myplot = plt.scatter(xData, yData, color=cols)

plt.show()
从matplotlib导入pyplot作为plt
x1Values=['alice'、'jordan'、'mike']
Y1值=[(2,3)、(1,1)、(4,5)]
扩展数据=[]
yData=[]
cols=[]
对于计数器,枚举中的名称(x1值):
#决定哪一点得到哪一种颜色
如果(Y1值[计数器][0]>Y1值[计数器][1]):
cols+=['r','g']
elif(y1Values[counter][0]