【问题标题】:How to select a color from a Matplotlib gradient如何从 Matplotlib 渐变中选择颜色
【发布时间】:2020-12-16 03:49:15
【问题描述】:

我想显示根据特定值着色的元素(我正在使用 FreeCAD 进行开发),然后使用 matplotlib 作为颜色条绘制图例。 我设法创建了一个从值列表的最小值到最大值的颜色条,但是我不知道如何为列表的每个值设置颜色:

  • 10 --> 红色
  • 0 --> 绿色
  • 2.3 --> ?

现在我的代码是这样的:

import matplotlib as mpl
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas

figure = plt.figure()
canvas = FigureCanvas(figure)

val_max= 10
val_min= 0

ax = figure.add_axes([0.05, 0.10, 0.5, 0.8])
cmap = mpl.cm.RdYlGn.reversed()
norm = mpl.colors.Normalize(vmin=val_min, vmax=val_max)
ticks_cm = np.linspace(val_min, val_max, 10, endpoint=True)
cb1 = mpl.colorbar.ColorbarBase(ax, cmap=cmap,
                           norm=norm,
                           ticks=ticks_cm,
                           orientation='vertical')
canvas.draw()

colorBar ploted

我很高兴知道是否可以从此渐变中检索一种颜色,该颜色与我的最小值和最大值之间的值相关联。谢谢

【问题讨论】:

    标签: python-3.x matplotlib colors gradient


    【解决方案1】:

    cmap(norm(val)) 将返回与值val 关联的RGBA 值(在[val_min, val_max] 区间内)

    val_max= 10
    val_min= 0
    
    cmap = mpl.cm.RdYlGn.reversed()
    norm = mpl.colors.Normalize(vmin=val_min, vmax=val_max)
    
    print(cmap(norm(5)))
    
    > (0.9999231064975009, 0.9976163014225298, 0.7450211457131872, 1.0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-12
      • 2019-05-14
      • 1970-01-01
      • 2021-03-13
      • 2019-12-07
      • 1970-01-01
      • 1970-01-01
      • 2021-03-27
      相关资源
      最近更新 更多