我一直在尝试使用matplotlib绘制一些数据。我正在使用:
plt.plot(x1Values, y1Values, color='green', linestyle='None',
marker='o', markerfacecolor='blue', markersize=4)这里的x1Values是一个名称列表,例如:
x1Values = ['alice', 'jordan', 'mike']y1Values是一个二进制元组列表,例如:
y1Values = [(2,3),(1,1),(4,5)]现在,上面提到的plot函数基本上像预期的那样工作,x轴上的每个值都有两个点,但是plot有点混乱,因为我的实际列表大小约为100。这就是为什么我要避免使用plt.label()函数来标记这些点的原因。标签开始重叠,使得图表变得凌乱和有点无用。我想要做的是给这些点不同的颜色。例如,在图中,我希望(alice,2)是绿色的,(alice,3)是红色的。同样,(mike,4)是绿色的,(mike,5)是红色的,如果可能的话,(我在这里不抱太大希望,但如果可能的话)我希望重叠点(jordan,1)和(jordan,1)是其他颜色,比如蓝色。但是,如果这是不能实现的,那也没关系,只要其余的都实现了
发布于 2019-10-16 21:57:56
我看到你的答案太晚了,所以我也是这么做的:
我认为,一般来说,散点图更适合你的情况。因为它允许您为每个点单独设置颜色。下面的实现也将重叠的结果绘制为蓝色。
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()发布于 2019-10-16 21:19:26
在发布问题几分钟后,我就找到了解决方案。将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)https://stackoverflow.com/questions/58414186
复制相似问题