亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 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()

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

否則,您當然可以將 dpi 增加到瘋狂的值以消除間距。例如dpi=1000(而不是問題中dpi=72使用的)給出了一張沒有邊緣可觀察的圖片。

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


查看完整回答
反對 回復 2021-09-02
  • 1 回答
  • 0 關注
  • 234 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號