Matplotlib使色彩图没有透明度

问题描述 投票:0回答:2
def visualize(goal_x, goal_y, goal_z, epoch_arr):
    # %% Create Color Map
    colormap = plt.get_cmap("binary")
    norm = matplotlib.colors.Normalize(vmin=min(epoch_arr), vmax=max(epoch_arr))

    # %% 3D Plot
    fig = plt.figure()
    ax3D = fig.add_subplot(111, projection='3d')
    ax3D.set_facecolor('xkcd:salmon')

    ax3D.scatter(goal_x, goal_y, goal_z, s=100, c=colormap(norm(epoch_arr.values)), marker='o')

    plt.show()

上面的代码生成如下图:enter image description here

但是,正如您所看到的那样,右侧有一个点显然仍然不是100%不透明的。您可以通过该点查看网格线。如何使散点图点100%不透明,没有透明度?

matplotlib
2个回答
1
投票

一些技巧会有所帮助。在这里,我首先绘制所有白色标记,然后使用预期颜色再次绘制在顶部。

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# make-up some data
goal_x = list(range(10))
goal_y = list(range(10))
goal_z = list(range(10))
epoch_arr = np.linspace(0,1,10)

fig = plt.figure(figsize=(8,8))
ax3D = fig.add_subplot(111, projection='3d')
ax3D.set_facecolor('xkcd:salmon')

# First plot: all markers are in white color
ax3D.scatter(goal_x, goal_y, goal_z, s=500, c='w', marker='o', alpha=1.0, zorder=10)

colormap = plt.get_cmap("binary")
norm = matplotlib.colors.Normalize(vmin=min(epoch_arr), vmax=max(epoch_arr))
#ax3D.scatter(goal_x, goal_y, goal_z, s=100, c=colormap(norm(epoch_arr.values)), marker='o')

# Second plot: use intended colormap
ax3D.scatter(goal_x, goal_y, goal_z, s=500, c='b', marker='o', zorder=11)

plt.show()

由此产生的情节:

enter image description here


0
投票

设置alpha=1就足够了。

ax3D.scatter(..., alpha=1)

或者设置depthshade=False

ax3D.scatter(..., depthshade=False)

两种情况下的结果都是相同的。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.