我一直在尝试使用matplotlib绘制一些数据。我正在使用:
int main()
{
for (size_t i = 0; i < 3; i++)
{
printf("%zu", i);
}
return 0; // not needed for main - default is 0
}
此处x1Values是一个名称列表,例如:
printf
和y1Values是二进制元组的列表,例如:
plt.plot(x1Values, y1Values, color='green', linestyle='None',
marker='o', markerfacecolor='blue', markersize=4)
现在,上面提到的出图函数基本上按预期工作,相对于x轴上的每个值有两个点,但是由于我的实际列表大小约为100,所以出图有些混乱。这就是为什么我要避免使用plt.label()函数标记这些点的原因。标签开始重叠,使图形混乱并且有些无用。我想要做的就是给这些点赋予不同的颜色。例如,在图形上,我希望(alice,2)为绿色,而(alice,3)为红色。同样,(mike,4)为绿色,(mike,5)为红色,并且,如果可能的话,(我在这里没有很高的希望,但如果可能的话)我想要重叠点(jordan,1)和(约旦(1)为其他颜色,例如蓝色。但是,只要无法实现其余的目标,那就可以了。
答案 0 :(得分:1)
我看到你的答案为时已晚,所以这也是我的方法:
我认为,通常散点图更适合您的情况。 因为它允许您为每个点分别设置颜色。 下面的实现还将重叠的结果绘制为蓝色。
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()
答案 1 :(得分:0)
在发布问题后数分钟就找到了解决方案。将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)