提问人:Cloudy 提问时间:11/17/2023 最后编辑:Cloudy 更新时间:11/17/2023 访问量:32
如何通过颜色平滑地编码二维位置
How to smoothly encode 2-dimensional location by colors
问:
在一些网页(link1、link2)中,我看到人们用颜色填充 2D 平面:
但是,这些示例没有源代码。如何在 Python 中生成这样的图?具体来说,如果我有 和 值的数组,我该如何编写一个函数,以便可以生成这样的图?x
y
color = f(x, y)
scatter(x, y, color)
到目前为止,我已经尝试了以下方法:
import numpy as np
import matplotlib.pyplot as plt
base_x_color = np.array([0.0, 1.0, 0.0])
base_y_color = np.array([1.0, 0.0, 0.0])
x = np.random.rand(100000)
y = np.random.rand(100000)
color = x[:,None] * base_x_color[None,:] + y[:,None] * base_y_color[None,:]
plt.figure()
plt.scatter(x, y, s=5, c=color)
plt.show()
答:
0赞
Sash Sinha
11/17/2023
#1
你可以使用 numpy。MeshGrid
实现双线性插值:
import numpy as np
import matplotlib.pyplot as plt
resolution = 500
x = np.linspace(0, 1, resolution)
y = np.linspace(0, 1, resolution)
X, Y = np.meshgrid(x, y)
color_1 = np.array([1.0, 0.0, 0.0]) # Red
color_2 = np.array([0.0, 1.0, 0.0]) # Green
color_3 = np.array([0.0, 0.0, 1.0]) # Blue
color_4 = np.array([1.0, 1.0, 0.0]) # Yellow
color = np.zeros((resolution, resolution, 3))
color += (1 - X)[:, :, None] * (1 - Y)[:, :, None] * color_1[None, None, :]
color += X[:, :, None] * (1 - Y)[:, :, None] * color_2[None, None, :]
color += (1 - X)[:, :, None] * Y[:, :, None] * color_3[None, None, :]
color += X[:, :, None] * Y[:, :, None] * color_4[None, None, :]
plt.figure()
plt.imshow(color, origin='lower', extent=[0, 1, 0, 1])
plt.show()
输出:
0赞
Tấn Nguyên
11/17/2023
#2
根据您的代码,似乎生成的值接近于零,因此是的,您可以使用它来控制低值和高值np.random.rand
np.random.uniform
import numpy as np
import matplotlib.pyplot as plt
base_x_color = np.array([0, 1.0, 0.0])
base_y_color = np.array([1.0, 0, 0.0])
x = np.random.uniform(low=0.5, high=0.8, size=(100000,))
y = np.random.uniform(low=0.5, high=0.8, size=(100000,))
color = x[:,None] * base_x_color[None,:] + y[:,None] * base_y_color[None,:]
plt.figure()
plt.scatter(x, y, s=5, c=color)
plt.show()
上一个:如何逐行获取 svn 日志数据
下一个:如何改善撰写中大纲按钮的视图?
评论