有没有一种适当的方法来画一个matplotlib绘图的边框?在
到目前为止,我发现的最好的答案是这个答案[1]和一个matplotlib教程[2],它使用matplotlib.patheffects
为轮廓绘制一个稍粗的笔划。在
但我的问题是它打破了半透明的绘图,如果你设置alpha < 1.0
你会看到一个完整的笔划后面的主,而我想要一个真正的边界。有没有办法画出一个真正的轮廓?在
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patheffects as mpe
outline=mpe.withStroke(linewidth=8, foreground='black')
x = np.linspace(0, 2*np.pi, 1000)
plt.plot(x, np.sin(x), lw=5, color='red', path_effects=[outline],
label="stroke no alpha")
plt.plot(x, np.sin(x-np.pi/3.), lw=5, alpha=0.5, color='red', path_effects=[outline],
label="stroke with alpha")
plt.plot(x, np.sin(x-2*np.pi/3.), lw=5, alpha=0.5, color='red',
label="no stroke with alpha")
plt.legend()
plt.show()
有一种方法可以使用alpha绘制一个真正的边界,从这个意义上说,在红线下面看不到更粗的黑线。诀窍是画一条白线覆盖黑线不需要的部分,以便只留下边界。在
因此,“阿尔法中风”应该是:
得出以下曲线图:
可以看出,这解决了有边框和没有边框之间的色差问题,但不能看到下面的线条。在
根据应用的不同,白层的alpha参数也可以设置为半透明值,以便在屏蔽黑线以绘制边界和允许查看可能在下面的其他线之间进行权衡。例如,以下路径效应:
^{pr2}$产量:
它介于由红色和alpha0.5组合而成的粉红色和下面的黑色线条之间的一半,同时仍然可以看到之前绘制的其他线条。在
相关问题 更多 >
编程相关推荐