Как перемасштабировать участок в сюжете с помощью matplotlib - PullRequest
1 голос
/ 23 февраля 2020

У меня есть 4 субплота с другим 3D-графиком с цветовой шкалой. Я хочу построить XY-вид моего 3D-графика, удалить ось x, y, z и изменить размер моего графика, чтобы использовать все пространство, доступное в субплоте, так чтобы представление XY имело ту же высоту, что и цветовая полоса. Я могу удалить ось, но я не знаю, как изменить размер изображения. Я приложил рабочий код, чтобы проиллюстрировать это.

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

# Create 3D function
n_radii = 8
n_angles = 36
radii = np.linspace(0.125, 1.0, n_radii)
angles = np.linspace(0, 2*np.pi, n_angles, endpoint=False)[..., np.newaxis]
x = np.append(0, (radii*np.cos(angles)).flatten())
y = np.append(0, (radii*np.sin(angles)).flatten())
z = np.sin(-x*y)

fig = plt.figure()
for ii in range(1, 4):
    #Plot
    # ============================================================================ 
    ax = fig.add_subplot(2,2, ii, projection='3d')
    cs =ax.plot_trisurf(x, y, z, linewidth=0.2, antialiased=True)

    ax.view_init(90, 0)
    plt.title(ii)
    # ax.axis('off')
    plt.grid(b=None)

    # Create color bar
    # ============================================================================ 
    norm = matplotlib.colors.Normalize(vmin = 0, vmax = 1, clip = False)
    m = plt.cm.ScalarMappable(norm=norm)
    m.set_array([])
    plt.colorbar(m)

plt.tight_layout()
plt.show()
#plt.savefig("test.pdf",bbox_inches='tight')

Есть идеи, как мне это сделать?

1 Ответ

1 голос
/ 24 февраля 2020

Я добавил

plt.gca().set_axis_off()
plt.axis([0.6 * x for x in plt.axis()])

к вашему коду, который скрывает оси и устанавливает представление на 60% от его предыдущего значения. Результат выглядит так:

Figure 1

Полный код:

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

# Create 3D function
n_radii = 8
n_angles = 36
radii = np.linspace(0.125, 1.0, n_radii)
angles = np.linspace(0, 2*np.pi, n_angles, endpoint=False)[..., np.newaxis]
x = np.append(0, (radii*np.cos(angles)).flatten())
y = np.append(0, (radii*np.sin(angles)).flatten())
z = np.sin(-x*y)

fig = plt.figure()
for ii in range(1, 4):
    #Plot
    # ============================================================================ 
    ax = fig.add_subplot(2,2, ii, projection='3d')
    cs =ax.plot_trisurf(x, y, z, linewidth=0.2, antialiased=True)

    ax.view_init(90, 0)
    plt.title(ii)
    # ax.axis('off')
    plt.grid(b=None)

    # Create color bar
    # ============================================================================ 
    norm = matplotlib.colors.Normalize(vmin = 0, vmax = 1, clip = False)
    m = plt.cm.ScalarMappable(norm=norm)
    m.set_array([])
    plt.colorbar(m)

    plt.gca().set_axis_off()
    plt.axis([0.6 * x for x in plt.axis()])

plt.tight_layout()
plt.show()
#plt.savefig("test.pdf",bbox_inches='tight')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...