我有以下代码,它在matplotlib中生成两个绘图.

然而,每个我都无法在第二个小情节中删除这个边界,尽管提供了所有这些参数.

如何go 除第二个小块周围的黑色边框(见附图)

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

beta, gamma = np.linspace(-np.pi / 2, np.pi / 2, 500), np.linspace(-np.pi / 2, np.pi / 2, 500)
B, G = np.meshgrid(beta, gamma)

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 6))

# 2D Contour plot
ax1.imshow(obj_vals.T, origin='lower', cmap='hot', extent=(-np.pi/2, np.pi/2, -np.pi/2, np.pi/2))
ax1.set_xlabel(r'$\gamma$')
ax1.set_ylabel(r'$\beta$')
ax1.set_xticks([])
ax1.set_yticks([])


ax2 = fig.add_subplot(122, projection='3d')
# Make panes transparent
ax2.xaxis.pane.fill = False # Left pane
ax2.yaxis.pane.fill = False # Right pane
ax2.zaxis.pane.fill = False # Right pane

# Remove grid lines
ax2.grid(False)
# Remove tick labels
ax2.set_xticklabels([])
ax2.set_yticklabels([])
ax2.set_zticklabels([])

# Transparent spines
ax2.xaxis.line.set_color((1.0, 1.0, 1.0, 0.0))
ax2.yaxis.line.set_color((1.0, 1.0, 1.0, 0.0))
ax2.zaxis.line.set_color((1.0, 1.0, 1.0, 0.0))

ax2.w_xaxis.set_pane_color((1.0, 1.0, 1.0, 0.0))
ax2.w_yaxis.set_pane_color((1.0, 1.0, 1.0, 0.0))

# No ticks
ax2.set_xticks([]) 
ax2.set_yticks([]) 
ax2.set_zticks([])

# Surface plot
surf = ax2.plot_surface(B, G, obj_vals.T, cmap='hot')


plt.axis('off')
plt.tight_layout()
plt.show()

enter image description here

推荐答案

我认为这里的问题是,您正在创建一个带有两个2D轴的子图,然后在正确的2D轴上添加一个3D轴.您已经删除了3D打印的样条线,但最初创建的原始2D打印仍在那里.我认为一个更好的方法是先创建图形,然后再单独创建子情节,就像this documentation page上所示的那样.

然后,您还可以使用ax.set_axis_off()删除所有3D轴组件,如按this answer.

import matplotlib.pyplot as plt
import numpy as np

plt.close("all")

x = np.linspace(-2*np.pi, 2*np.pi, 100)
y = np.linspace(-2*np.pi, 2*np.pi, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X)*np.cos(Y)

fig = plt.figure(figsize=(12,6))

ax1 = fig.add_subplot(1, 2, 1)
ax1.contourf(X, Y, Z, levels=100, cmap="hot")
ax1.set_xlabel(r'$\gamma$')
ax1.set_ylabel(r'$\beta$')
ax1.set_xticks([])
ax1.set_yticks([])


ax2 = fig.add_subplot(1, 2, 2, projection="3d")
ax2.plot_surface(X, Y, Z, cmap="hot", rstride=1, cstride=1)
ax2.set_axis_off()

plt.tight_layout()
plt.show()

Python相关问答推荐

单击cookie按钮,但结果不一致

使用Curses for Python保存和恢复终端窗口内容

将列表中的元素替换为收件箱中的元素

这家einsum运营在做什么?E = NP.einsum(aj,kl-il,A,B)

如何将带有逗号分隔的数字的字符串解析为int Array?

如何在Python中使用ijson解析SON期间检索文件位置?

有什么方法可以避免使用许多if陈述

如何通过多2多字段过滤查询集

如何在Python中使用io.BytesIO写入现有缓冲区?

GL pygame无法让缓冲区与vertextPointer和colorPointer一起可靠地工作

使用numpy提取数据块

Pandas 有条件轮班操作

无法通过python-jira访问jira工作日志(log)中的 comments

发生异常:TclMessage命令名称无效.!listbox"

基于字符串匹配条件合并两个帧

当我try 在django中更新模型时,模型表单数据不可见

我的字符串搜索算法的平均时间复杂度和最坏时间复杂度是多少?

在不同的帧B中判断帧A中的子字符串,每个帧的大小不同

ModuleNotFoundError:没有模块名为x时try 运行我的代码''

以异步方式填充Pandas 数据帧