如何在for循环下更改标记形状和颜色?

时间:2014-11-03 16:23:46

标签: python matplotlib

我有这样的数据集

x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y=[5, 10, 15, 20, 25, 5, 10, 15, 20, 25,]

我想用

做散点图
  • xy的前5个元素,其中一个标记形状,颜色从蓝色变为红色
  • xy的下5个元素,下一个标记和颜色与第一个相同。

实际上我有x有1000个元素,y有10x100个元素。我想绘制(10组散点)10种不同的标记形状和所有起始颜色,从蓝色到红色。

示例:

x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y=[5, 10, 15, 20, 25, 5, 10, 15, 20, 25,]
c=['o', '*']
z=[.1, .2, .3, .4, .5, .6, .7, .8, .9, .99]
plt.scatter( X, Y, marker=x, c=z)

1 个答案:

答案 0 :(得分:3)

首先,您的代码中存在一些问题,变量是大写的,然后是小写的,但Python区分大小写。

marker选项只允许单个字符,因此您无法传递它们的列表。相反,您需要循环并更改您想要的每件作品。您的数据的一个小例子在

之下
import matplotlib.pyplot as plt

x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y=[5, 10, 15, 20, 25, 5, 10, 15, 20, 25,]
marker= ['o', 's']
z=[.1, .3, .5, .7, .99]

n = 5
for k in range(2):    
    plt.scatter(x[k*n:(k + 1)*n], y[k*n:(k + 1)*n], s=100,
                  marker=marker[k], c=z)

这给出了结果 enter image description here

相关问题