Фон Pyplot с цветовым градиентом, заполняющий всю фигуру

Я хочу добавить фон к моей фигуре 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))

Я могу построить изображение по всем осям, под данными, но не под метками осей, сеткой и т. д. Есть ли разумный способ сделать это?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
73
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()

Другие вопросы по теме