Pyplot背景颜色渐变,填充整个图

问题描述 投票:0回答:1

我想为我的 Pyplot 图添加背景,使其看起来大致如下所示:

enter image description here

据我所知,向图形添加颜色渐变有点棘手,因此想法是拉伸轴以填充整个图形,然后添加背景图像或类似于轴的图像。

但是,我既无法让轴填充整个图形,如下面的代码示例所示,也不知道如何设置颜色渐变背景,或在图形后面设置图像。

这就是我现在生成的:

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()

enter image description here

使用这个

ax.imshow([[0,0],[1,1]], cmap=plt.cm.Greens, interpolation='bicubic', extent=(-1, 1, -1, 1))

我可以在整个轴上、数据下方绘制图像,但不能在轴标签、网格等下方绘制图像。有没有聪明的方法可以做到这一点?

python matplotlib gradient
1个回答
0
投票

您可以为背景创建一个额外的子图。并通过

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]) # background subplot filling the figure
ax_bg.imshow([[1, 1], [0, 0]], cmap='Greens', aspect='auto', interpolation='bicubic')

ax = fig.add_subplot(111, projection='3d')
ax.scatter(x, y, z)
ax.set_facecolor('none') # make transparent

plt.show()
© www.soinside.com 2019 - 2024. All rights reserved.