Hos*_*hoi 6 python scatter matplotlib
现在看来,默认的散点图标记是没有边的实心圆.我想要一个带边缘的标记,并且facecolor ="none".但是如果facecolor ="none"但未指定edgecolor,则绘图为空.我希望标记有多种不同的颜色,但不关心哪一种颜色.
我怎样才能"打开"边缘?
有两种方法可以生成空的或空心的散射标记:
您可以"关闭"面部,而不是"只是打开"边缘.因此,为了使散射标记的面部颜色透明,您可以将结果的面颜色设置PolyCollecton
为"none"
.
sc = ax.scatter(...)
sc.set_facecolor("none")
Run Code Online (Sandbox Code Playgroud)
这不同于sc = ax.scatter(x,y, c=x, facecolor="none")
,因为c
参数会覆盖facecolor
.
完整的例子:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,2*np.pi,20)
y = np.sin(x)
fig, ax=plt.subplots()
sc = ax.scatter(x,y, c=x, cmap="nipy_spectral")
sc.set_facecolor("none")
plt.show()
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用非填充标记.这将仅在边缘处具有其面部颜色.一个例子可能 marker="$\u25EF$"
来自STIX字体(也见这个问题)
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,2*np.pi,20)
y = np.sin(x)
fig, ax=plt.subplots()
sc = ax.scatter(x,y, c=x, marker="$\u25EF$", cmap="nipy_spectral")
plt.show()
Run Code Online (Sandbox Code Playgroud)