gpt4 book ai didi

python - matplotlib 中的动态标记颜色

转载 作者:行者123 更新时间:2023-11-28 22:37:10 27 4
gpt4 key购买 nike

我有两个列表,其中包含一些点的 x 和 y 坐标。还有一个列表,其中为每个点分配了一些值。现在我的问题是,我总是可以在 python 中使用标记绘制点 (x,y)。我也可以手动选择标记的颜色(如此代码所示)。

import matplotlib.pyplot as plt

x=[0,0,1,1,2,2,3,3]
y=[-1,3,2,-2,0,2,3,1]
colour=['blue','green','red','orange','cyan','black','pink','magenta']
values=[2,6,10,8,0,9,3,6]

for i in range(len(x)):
plt.plot(x[i], y[i], linestyle='none', color=colour[i], marker='o')

plt.axis([-1,4,-3,4])
plt.show()

但是是否可以根据分配给该点的值(使用 cm.jet、cm.gray 或类似的其他配色方案)为标记特定点的标记选择颜色,并提供带有绘图的颜色条?

比如我要找的就是这种剧情

enter image description here

其中红点表示高温点,蓝点表示低温点,其他点表示介于两者之间的温度。

最佳答案

您很可能正在寻找 matplotlib.pyplot.scatter .示例:

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

# Generate data:
N = 10
x = np.linspace(0, 1, N)
y = np.linspace(0, 1, N)
x, y = np.meshgrid(x, y)
colors = np.random.rand(N, N) # colors for each x,y

# Plot
circle_size = 200
cmap = matplotlib.cm.viridis # replace with your favourite colormap
fig, ax = plt.subplots(figsize=(4, 4))
s = ax.scatter(x, y, s=circle_size, c=colors, cmap=cmap)

# Prettify
ax.axis("tight")
fig.colorbar(s)

plt.show()

注意:viridis 在旧版本的 matplotlib 上可能会失败。结果图像:

Circles coloured by colormap

编辑

scatter 不要求您的输入数据是二维的,这里有 4 个生成相同图像的备选方案:

import matplotlib
import matplotlib.pyplot as plt

x = [0,0,1,1,2,2,3,3]
y = [-1,3,2,-2,0,2,3,1]
values = [2,6,10,8,0,9,3,6]
# Let the colormap extend between:
vmin = min(values)
vmax = max(values)

cmap = matplotlib.cm.viridis
norm = matplotlib.colors.Normalize(vmin=vmin, vmax=vmax)

fig, ax = plt.subplots(4, sharex=True, sharey=True)
# Alternative 1: using plot:
for i in range(len(x)):
color = cmap(norm(values[i]))
ax[0].plot(x[i], y[i], linestyle='none', color=color, marker='o')

# Alternative 2: using scatter without specifying norm
ax[1].scatter(x, y, c=values, cmap=cmap)

# Alternative 3: using scatter with normalized values:
ax[2].scatter(x, y, c=cmap(norm(values)))

# Alternative 4: using scatter with vmin, vmax and cmap keyword-arguments
ax[3].scatter(x, y, c=values, vmin=vmin, vmax=vmax, cmap=cmap)

plt.show()

关于python - matplotlib 中的动态标记颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36809437/

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