如何在for循环中更改标记形状和颜色?
我有一组数据,长得像这样:
x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y=[5, 10, 15, 20, 25, 5, 10, 15, 20, 25,]
我想做一个散点图,要求是:
- 前5个元素的
x
和y
用一种标记形状,颜色从蓝色渐变到红色 - 接下来的5个元素的
x
和y
用另一种标记,颜色和前面的保持一致。
实际上,我有 x
有1000个元素,而 y
有10组,每组100个元素。我想画出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 个回答
4
首先,你的代码里有一些问题,变量的命名有的用大写字母,有的用小写字母,但在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)
这样做的结果是:
