gpt4 book ai didi

python - 使用 Matplotlib 在线图旁边绘制颜色条

转载 作者:太空狗 更新时间:2023-10-30 02:03:56 24 4
gpt4 key购买 nike

我想在图表中添加颜色条,但我不明白它是如何工作的。问题是我通过以下方式制作自己的颜色代码:

x = np.arange(11)

ys = [i+x+(i*x)**2 for i in range(11)]

colors = cm.rainbow(np.linspace(0, 1, len(ys)))

colors[i] 会给我一种新颜色。然后我使用(自制)函数来选择相关数据并相应地绘制它们。这看起来像这样:

function(x,y,concentration,temperature,1,37,colors[0])
function(x,y,concentration,temperature,2,37,colors[1])
# etc

现在我想在颜色条中添加颜色,我可以更改标签。我该怎么做?

我见过几个示例,其中您将所有数据绘制为一个数组,并带有自动颜色条,但在这里我一个一个地绘制数据(通过使用函数选择相关数据)。

编辑:

function(x,y,concentration,temperature,1,37,colors[0]) 看起来像这样(简化):

def function(x,y,c,T,condition1,condition2,colors):

import matplotlib.pyplot as plt

i=0

for element in c:
if element == condition1:
if T[i]==condition2:
plt.plot(x,y,color=colors,linewidth=2)

i=i+1

return

最佳答案

在线条图旁边绘制颜色条

请将我的解决方案(我只使用了 11 个不同振幅的正弦波)映射到您的问题(正如我告诉您的,很难从您在 Q 中所写的内容中理解)。

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

# an array of parameters, each of our curves depend on a specific
# value of parameters
parameters = np.linspace(0,10,11)

# norm is a class which, when called, can normalize data into the
# [0.0, 1.0] interval.
norm = matplotlib.colors.Normalize(
vmin=np.min(parameters),
vmax=np.max(parameters))

# choose a colormap
c_m = matplotlib.cm.cool

# create a ScalarMappable and initialize a data structure
s_m = matplotlib.cm.ScalarMappable(cmap=c_m, norm=norm)
s_m.set_array([])

# plotting 11 sines of varying amplitudes, the colors are chosen
# calling the ScalarMappable that was initialised with c_m and norm
x = np.linspace(0,np.pi,31)
for parameter in parameters:
plt.plot(x,
parameter*np.sin(x),
color=s_m.to_rgba(parameter))

# having plotted the 11 curves we plot the colorbar, using again our
# ScalarMappable
plt.colorbar(s_m)

# That's all, folks
plt.show()

例子

Curves+colormap

致谢

A similar problem, about a scatter plot

更新 — 2021 年 4 月 14 日

  1. 使用最新版本的 Matplotlib,不再需要语句 s_m.set_array([])。另一方面,它没有害处。
  2. 在绘图时,代替 color=s_m.to_rgba(parameter) 可能需要使用(稍微)更明显的 color=c_m(norm (参数))

关于python - 使用 Matplotlib 在线图旁边绘制颜色条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26545897/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com