【问题标题】:matplotlib - scatterplot, choose colours for y tuplesmatplotlib - 散点图,为 y 元组选择颜色
【发布时间】:2017-07-02 20:29:49
【问题描述】:

我是 Python 新手,我正在尝试创建一个散点图,显示每个 xtick 的几个 y 值。我发现这个问题帮助我想出了某种代码:Python Scatter Plot with Multiple Y values for each X

x = [1,2,3,4]
y = [(1,1,2,3,9),(1,1,2,4), (0.5,4), (0.1,2)]

for xe, ye in zip(x, y):
    plt.scatter([xe] * len(ye), ye, color=['blue', 'red'])

plt.xticks([1, 2, 3, 4])
plt.axes().set_xticklabels(['5', '10', '15', '25'])
plt.ylim(0, 1)

plt.show()

问题是,例如,此代码交替打印红色和蓝色的第一个元组的点。但是,我喜欢用蓝色打印第一个元组的所有点(例如(1,1,2,3,9)),用红色打印下一个元组的所有点(例如(1,1,2,4))等有没有办法以这种方式指定颜色?我还没有遇到过类似的问题。

非常感谢任何提示或帮助!

【问题讨论】:

  • y 中的第一个元组有 5 个条目,但您只有 4 个 x 值。这样做的预期结果是什么?
  • @ImportanceOfBeingErnest 我喜欢为每个 x 绘制所有几个 y 值(在我的真实代码中,每个元组包含 1000 个数字),所以第一个元组绘制在第一个 xtick 上,下一个元组绘制在下一个 xtick 等。我对不同数量的值没有任何问题。你看到这里有错误吗?

标签: python matplotlib scatter-plot


【解决方案1】:

使用itertools.cycle 循环颜色,并在循环中将它们与元组一起压缩:

for (xe, ye), color in zip(zip(x, y), itertools.cycle(['blue', 'red'])):
    pyplot.scatter([xe] * len(ye), ye, color=color)

【讨论】:

  • 很好,非常感谢您的快速响应!太完美了!
猜你喜欢
  • 1970-01-01
  • 2014-09-10
  • 2022-11-04
  • 1970-01-01
  • 2011-08-29
  • 2015-04-19
  • 2021-04-15
  • 2012-04-29
相关资源
最近更新 更多