【问题标题】:Change colour of curve according to its y-value in matplotlib [duplicate]根据matplotlib中的y值更改曲线的颜色[重复]
【发布时间】:2013-11-23 16:58:16
【问题描述】:

我正在尝试使用 matplotlib 的工具复制附图的样式。

基本上,我想使用 matplotlib 根据其 y 值更改曲线的颜色。

【问题讨论】:

标签: matplotlib color-mapping


【解决方案1】:

您显示的图没有由图的垂直轴设置的颜色(这就是我认为的 y 值)。相反,它只是覆盖了 8 个不同的图,每个图都有不同的颜色,但没有说明颜色的含义。

这是一个看起来像你的情节的例子:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm

# some fake data:
x = np.linspace(0, 2*np.pi, 1000)
fs = np.arange(1, 5.)
ys = np.sin(x*fs[:, None])

for y, f in zip(ys, fs):
    plt.plot(x, y, lw=3, c=cm.hot(f/5))

如果你真的想让一行的颜色改变它的值,你必须对它进行修改,因为据我所知,任何给定的Line2D 对象只能有一种颜色。一种方法是制作散点图,其中每个点都可以有任何颜色。

x = np.linspace(0, 2*np.pi, 1000)
y = np.sin(2*x)
plt.scatter(x,y, c=cm.hot(np.abs(y)), edgecolor='none')

注意事项:

  • 颜色向量应介于01 之间,因此如果是y.max() > 1,则通过它进行归一化:c=cm.hot(y/y.max()) 并确保它都是正值。
  • 我使用了edgecolor='none',因为默认情况下scatter 标记具有黑色轮廓,这使得它看起来不像一条均匀的线。
  • 如果您的数据间隔太远,如果您不希望标记之间出现间隙,则必须对数据进行插值。

【讨论】:

  • 没错。但是,忘记情节,您是否知道如何根据垂直轴上的位置更改线条的颜色?
  • 在 matplotlib 中,一个线对象不能有超过一种颜色。您想要的最佳近似值是做一个散点图,其中颜色由与 y 数组相同的值设置。我将尽快编辑我的答案以举例说明。
  • 在这种情况下我应该如何显示颜色条?
猜你喜欢
  • 1970-01-01
  • 2021-06-18
  • 2012-08-03
  • 2018-05-21
  • 2018-07-08
  • 1970-01-01
  • 1970-01-01
  • 2018-11-10
  • 2021-11-27
相关资源
最近更新 更多