为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 alpha != 0 从tripcolor图中删除边缘线?

如何使用 alpha != 0 从tripcolor图中删除边缘线?

慕婉清6462132 2021-09-02 19:18:54
该matplotlib.pyplot.tripcolor 示例生成此图像:如果我改变绘图线tpc = ax1.tripcolor(triang, z, shading='flat')到tpc = ax1.tripcolor(triang, z, shading='flat', alpha=0.5)然后出现彩色边缘:添加antialiased=True使事情变得更好,但边缘仍然可见:我尝试过的其他任何事情都没有改变边缘的外观。他们似乎被设置的影响linewidths或edgecolors,也不由方法set_linewidth或set_edgewidths在上tpc对象。如何绘制没有边缘的透明三色?
查看完整描述

1 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

我认为在离散网格(图像)上非矩形定位的补丁之间会有一些重叠或空间是不可避免的。


然而,对于示例案例,似乎没有理由使用任何 alpha。相反,使用 alpha 混合并使用这些混合颜色创建新的颜色图,会产生相同的结果。


import matplotlib.pyplot as plt

import matplotlib.tri as tri

import numpy as np

from matplotlib.colors import ListedColormap


n_angles = 36

n_radii = 8

min_radius = 0.25

radii = np.linspace(min_radius, 0.95, n_radii)


angles = np.linspace(0, 2 * np.pi, n_angles, endpoint=False)

angles = np.repeat(angles[..., np.newaxis], n_radii, axis=1)

angles[:, 1::2] += np.pi / n_angles


x = (radii * np.cos(angles)).flatten()

y = (radii * np.sin(angles)).flatten()

z = (np.cos(radii) * np.cos(3 * angles)).flatten()


triang = tri.Triangulation(x, y)


triang.set_mask(np.hypot(x[triang.triangles].mean(axis=1),

                         y[triang.triangles].mean(axis=1))

                < min_radius)


alpha = 0.5


fig1, (ax1, ax2) = plt.subplots(nrows=2, figsize=(4.5,8))

ax1.set_aspect('equal')

tpc = ax1.tripcolor(triang, z, shading='flat', alpha=alpha, antialiased=True)

fig1.colorbar(tpc, ax=ax1)

ax1.set_title('alpha=0.5')


# Alpha blending

cls = plt.get_cmap()(np.linspace(0,1,256))

cls = (1-alpha) + alpha*cls

cmap = ListedColormap(cls)


ax2.set_aspect("equal")

tpc2 = ax2.tripcolor(triang, z, shading='flat', antialiased=True, linewidth=0.72,

                     edgecolors='face', cmap=cmap)

fig1.colorbar(tpc2, ax=ax2)

ax2.set_title('opaque, alphablending')


fig1.tight_layout()

fig1.savefig("tripcolor.png")

plt.show()

//img1.sycdn.imooc.com//6130b3a6000178f704320782.jpg

否则,您当然可以将 dpi 增加到疯狂的值以消除间距。例如dpi=1000(而不是问题中dpi=72使用的)给出了一张没有边缘可观察的图片。

//img1.sycdn.imooc.com//6130b3b40001f99415011276.jpg


查看完整回答
反对 回复 2021-09-02
  • 1 回答
  • 0 关注
  • 212 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信