【问题标题】:How to change marker shape and color under for loop?如何在 for 循环下更改标记形状和颜色?
【发布时间】:2014-11-03 16:23:45
【问题描述】:

我有一组这样的数据

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)

【问题讨论】:

  • Scatter 目前不会在标记上广播。如果你想要N个不同的标记形状,那么你需要编写一个循环并调用scatter N次。

标签: python matplotlib


【解决方案1】:

首先,你的代码有一些问题,变量是大写然后是小写,但是 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)

这给出了结果

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    • 2020-10-13
    • 1970-01-01
    • 2011-09-25
    相关资源
    最近更新 更多