我已经有一些数据图,我使用contourf
和cm.jet
作为我的色彩图。 vmin
= - 100和vmax
= 100
我在另一个问题中读到我可以使用cm.jet(x)
从我的色彩映射中访问特定颜色,其中x在[0,1]中。
我想得到47的颜色,所以我想我用
尝试 fortyseven=pylab.cm.jet(0.735)
这会返回47的 rgb值。
然后我想用这个特定的rgb值绘制一个点:
ax.plot( x, y, fortyseven)
但这不会成功。我总是得到一个
ValueError: third arg must be a format string
错误。
所以我用
尝试了 ax.plot( x, y, 'fortyseven')
我得到了
ValueError: Unrecognized character f in format string
错误。
甚至可以用rgb值着色一个点?
或者我忽略了什么?
修改
如果我将 rgb-value 转换为十六进制值会有效吗?
编辑
我刚刚意识到它将返回 rgba-value
答案 0 :(得分:1)
您也可以在color
命令中使用plot
关键字,该命令接受任何matplotlib
颜色,包括RGBA tuple
,这是cm.jet(0.735)
回报。
ax.plot(x, y, color = fortyseven)
答案 1 :(得分:0)
好的,我做了一些研究,现在可以回答我自己的问题。
实际上rgba中的alpha代表透明度,因此它不会影响颜色本身,只是它的不透明程度。
所以基本上你可以将alpha值切掉,它不会改变颜色本身。
甚至有一个Python函数to_rgb
正是这样做的。
描述:
to_rgb(arg)
Returns an RGB tuple of three floats from 0-1.
arg can be an RGB or RGBA sequence or a string in any of several forms:
a letter from the set ‘rgbcmykw’
a hex color string, like ‘#00FFFF’
a standard name, like ‘aqua’
a string representation of a float, like ‘0.4’, indicating gray on a 0-1 scale
if arg is RGBA, the A will simply be discarded.
所以现在我可以使用 rgb-value 并绘制我的观点。