【问题标题】:How to pick unique colors of histogram bars in matplotlib?如何在 matplotlib 中选择直方图条的独特颜色?
【发布时间】:2014-10-13 08:13:36
【问题描述】:

我试图在同一个图上绘制几个直方图,但我发现一些颜色分配给不同的系列,这让我有点困扰。有没有办法强制颜色条是唯一的?

这适用于小数据集,但是当我使用大量数据时,我发现这个问题又回来了

这里是一个例子,蓝色被两次分配给两个不同的数据样本

在 matplotlib 中将颜色归因于直方图的所有示例和解决方案(至少是我发现的那些)都建议将 x 轴标准化为 0 和 1 之间的值,例如 this example ,但这不是我想要的,因为它是在我的案例中拥有真正的价值观非常重要。

还有其他解决方案吗?

谢谢

编辑

我提供的一个解决方案是将 cmap 调色板转换为 numpy 数组,并通过调用此调色板来使用 pyplot hist 颜色

N = len(list_of_samples)
sample_colors = cm.get_cmap('RdYlBu', N)
palette = sample_colors(np.arange(N))

但这仅适用于绘图功能的 hist 我收到此错误消息

ValueError: to_rgba: Invalid rgba arg "[[ 0.64705884  0.          0.14901961  1.        ]
 [ 0.89187675  0.2907563   0.20000001  1.        ]
 [ 0.98711484  0.64593837  0.36358543  1.        ]
 [ 0.99719888  0.91316527  0.61736696  1.        ]
 [ 0.91316529  0.96638656  0.90868344  1.        ]
 [ 0.63977591  0.82633053  0.90028011  1.        ]
 [ 0.34957983  0.55294117  0.75462185  1.        ]
 [ 0.19215687  0.21176471  0.58431375  1.        ]]"
only length-1 arrays can be converted to Python scalars

【问题讨论】:

  • plot 函数也需要它?你能给出一些示例代码来演示你想要如何绘制以及应该用不同的颜色着色吗? (也许this post 已经是你需要的了。)
  • 嗯,这确实可以满足我的需求,非常感谢@Falko
  • 检查以下答案:stackoverflow.com/a/61794768/7136493

标签: python matplotlib histogram


【解决方案1】:

直方图的解法如下:

import pylab as pl

N, bins, patches = pl.hist(pl.rand(1000), 20)

jet = pl.get_cmap('jet', len(patches))

for i in range(len(patches)):
    patches[i].set_facecolor(jet(i))

结果:

我希望这就是你想要的。

【讨论】:

  • 正如我在问题中所说,不幸的是,我不想将 x 轴值从 0 更改(标准化)为 1
  • 您不必这样做。分配颜色独立于您的 x 和 y 值。
猜你喜欢
  • 1970-01-01
  • 2017-06-29
  • 2016-02-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-09
  • 2018-08-12
  • 2023-03-26
  • 2016-11-01
相关资源
最近更新 更多