我想要一个带有colormap的散点图,用于edgecolors但没有facecolors。
当我使用facecolor='None'
时,它不起作用。
import numpy as np
import matplotlib.pyplot as plt
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = np.pi * (15 * np.random.rand(N))**2 # 0 to 15 point radii
plt.scatter(x, y, s=area,c=colors,facecolors='None',cmap="gist_rainbow", alpha=0.5)
plt.show()
有什么办法吗?
最佳答案
c
参数将同时影响面色和边色,因此将忽略参数facecolor
和edgecolor
。
一种解决方案是不将c
参数与颜色图一起使用,而是单独使用facecolors
和edgecolors
。在这种情况下,可以将facecolors
设置为"None"
,并且可以为edgecolors
提供要使用的颜色列表。
要创建此列表,可以应用相同的颜色图。
c = plt.cm.gist_rainbow(colors)
plt.scatter(x, y, s=area,facecolors="None", edgecolors=c, lw=1,alpha=0.5)
一个完整的例子:
import numpy as np
import matplotlib.pyplot as plt
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = np.pi * (15 * np.random.rand(N))**2 # 0 to 15 point radii
c = plt.cm.gist_rainbow(colors)
plt.scatter(x, y, s=area,facecolors="None", edgecolors=c, lw=2,alpha=0.5)
plt.show()