Я хочу добавить фон к моей фигуре Pyplot, чтобы она выглядела примерно так, как показано ниже:
Насколько я могу судить, добавить цветовой градиент к фигуре немного сложно, поэтому идея заключалась в том, чтобы растянуть оси, чтобы заполнить всю фигуру, а затем добавить фоновое изображение или что-то похожее на оси.
Однако мне не удалось заставить оси заполнить всю фигуру, как показано в примере кода ниже, и я не знаю, как установить цветной градиентный фон или установить изображение позади графика.
Это то, что я генерирую на данный момент:
import numpy as np
import matplotlib.pyplot as plt
import mypyplot
x, y, z = np.random.rand(30).reshape((3, 10))
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x, y, z)
fig.set_facecolor('green')
ax.set_facecolor('gray')
ax.set_position([0, 0, 1, 1])
plt.show()
Используя это
ax.imshow([[0,0],[1,1]], cmap=plt.cm.Greens, interpolation='bicubic', extent=(-1, 1, -1, 1))
Я могу построить изображение по всем осям, под данными, но не под метками осей, сеткой и т. д. Есть ли разумный способ сделать это?






Вы можете создать дополнительный сюжет для фона. И поставьте градиент через imshow(). Если фоновый подсюжет создается первым, он будет позади основного подсюжета. Затем сделайте фон основного сюжета прозрачным.
import numpy as np
import matplotlib.pyplot as plt
x, y, z = np.random.rand(30).reshape((3, 10))
fig = plt.figure()
ax_bg = fig.add_axes([0, 0, 1, 1])
ax_bg.imshow([[.8, .8], [.2, .2]], cmap='Greens', vmin=0, vmax=1, aspect='auto', interpolation='bicubic')
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x, y, z)
ax.set_facecolor('none') # make transparent
plt.show()