Meg*_*egh 4 python scatter colors matplotlib scatter-plot
我正在尝试绘制散点图,其中散点图中的每个点都应对应于我选择的给定颜色的特定阴影。mpl 文档指出,如果我设置类似:
color = '0.7'
Run Code Online (Sandbox Code Playgroud)
它给了我一个灰色阴影,其缩放强度为0.7. 我正在从值在 0 到 1 之间的数组中读取颜色的强度,每个值对应于散点图中该点的强度。我的代码如下:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import math
tsne_embeddings = np.load("tsne_embeddings.npy")
labels = np.load('labels.npy')
weights = np.load('weights.npy')
# Scale the weights from 0 to 1
max_weight = max(weights)
min_weight = min(weights)
weights = (weights - min_weight)/(max_weight - min_weight)
print(tsne_embeddings.shape)
x = list(tsne_embeddings[:,0])
y = list(tsne_embeddings[:,1])
labels = list(labels)
weights = np.round(weights,decimals=2)
weights = (np.exp(weights) - 1)/(np.exp(1) - 1)
weights = list(weights)
print(min(weights),max(weights))
for i, shade in enumerate(weights):
plt.scatter(x[i],y[i],color=shade,marker = '+')
plt.show()
Run Code Online (Sandbox Code Playgroud)
我正在以指数方式缩放这些权重,希望有更好的变化。所以,本质上,我的问题是:
谢谢你!
为了使您的方法适用于灰色阴影,您需要将值转换为字符串,因此plt.scatter(..., color=str(shade)).
使用 matplotlib 的更标准方法是直接使用权重,而不将它们重新缩放到 的范围0,1使用颜色图,并直接使用数组调用 scatter。权重进入c=参数。对于灰度值,这将是plt.scatter(x, y, c=weights, cmap='Greys', marker='+')。matplotlib 的另一个功能是,利用这些信息,它可以自动创建将灰度值映射到相应权重的颜色条。如果只创建一个散点图,plt.colorbar()不带参数将显示该颜色条。
类似的颜色图存在“紫色”、“蓝色”、“绿色”、“橙色”、“红色”……请参阅官方文档及其完整列表。如果明暗范围出现错误,则在名称中附加“_r”将使用相反的颜色范围(因此,“Greys”从白色变为黑色,而“Greys_r”从黑色变为白色)。
下面是一个使用 1 到 10 之间的值作为三个数组的工作示例:
from matplotlib import pyplot as plt
import numpy as np
x = np.arange(1, 11)
y = np.arange(1, 11)
weights = np.arange(1, 11)
plt.scatter(x, y, c=weights, cmap='Greys', marker='+')
plt.colorbar()
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12123 次 |
| 最近记录: |