Удалить границу с панели 3D Matplotlib - PullRequest
2 голосов
/ 22 января 2020

Я хотел бы удалить границы из моей 3D-сцены, как описано ниже. Любая идея, как это сделать?

enter image description here

Вот код для создания текущей сцены:

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

# Create figure
plt.style.use('dark_background') # Dark theme
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# Make panes transparent
ax.xaxis.pane.fill = False # Left pane
ax.yaxis.pane.fill = False # Right pane

# Remove grid lines
ax.grid(False)

# Remove tick labels
ax.set_xticklabels([])
ax.set_yticklabels([])
ax.set_zticklabels([])

# Print chart
file_path = 'charts/3d.png'
fig.savefig(file_path, bbox_inches='tight', pad_inches=0.05, transparent=True)

Ответы [ 2 ]

0 голосов
/ 22 января 2020

Я обычно устанавливаю альфа-канал на 0 для шипов и панелей и, наконец, убираю галочки:

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

# Create figure
plt.style.use('dark_background') # Dark theme
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# Make panes transparent
ax.xaxis.pane.fill = False # Left pane
ax.yaxis.pane.fill = False # Right pane

# Remove grid lines
ax.grid(False)

# Remove tick labels
ax.set_xticklabels([])
ax.set_yticklabels([])
ax.set_zticklabels([])

# Transparent spines
ax.w_xaxis.line.set_color((1.0, 1.0, 1.0, 0.0))
ax.w_yaxis.line.set_color((1.0, 1.0, 1.0, 0.0))
ax.w_zaxis.line.set_color((1.0, 1.0, 1.0, 0.0))

# Transparent panes
ax.w_xaxis.set_pane_color((1.0, 1.0, 1.0, 0.0))
ax.w_yaxis.set_pane_color((1.0, 1.0, 1.0, 0.0))

# No ticks
ax.set_xticks([]) 
ax.set_yticks([]) 
ax.set_zticks([])
0 голосов
/ 22 января 2020

Попробуйте добавить следующий параметр при создании рисунка

plt.figure (frameon = False)

РЕДАКТИРОВАТЬ: строки, содержащие комментарии, я добавил / изменено

import matplotlib.pyplot as plt
import numpy as np # Imported numpy for random data
from mpl_toolkits.mplot3d import Axes3D

plt.style.use('dark_background')
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

ax.xaxis.pane.fill = False
ax.yaxis.pane.fill = False


ax.set_xticklabels([])
ax.set_yticklabels([])
ax.set_zticklabels([])

# Remove the axis
plt.axis('off')

# Random data to illustrate
zdata = 15 * np.random.random(100)
xdata = np.sin(zdata) + 0.1 * np.random.randn(100)
ydata = np.cos(zdata) + 0.1 * np.random.randn(100)
ax.scatter3D(xdata, ydata, zdata, c=zdata, cmap='Greens')

# Print chart (savefig overwrites some styling configs, better this way)
with open('3d.png', 'wb') as outfile:
    fig.canvas.print_png(outfile)  
...