matplotlib径向渐变背景如何实现

我正在尝试将 matplotlib 背景设置为:


import matplotlib.pyplot as plt

import numpy as np


fig = plt.figure()

ax = fig.add_subplot(111)


ticks = ["Low", "Moderate", "High"]

plt.xlabel(r"x $\longrightarrow$", fontsize=14)

plt.ylabel(r"y $\longrightarrow$", fontsize=14)

plotlim = plt.xlim() + plt.ylim()

print(plotlim)

ax.imshow([[1, 1], [0, 0]],

          cmap=plt.cm.Reds,

          interpolation='bicubic',

          extent=plotlim)

plt.xticks(np.arange(len(ticks)) / 2, ticks, fontsize=14)

plt.yticks(np.arange(len(ticks)) / 2,

           ticks,

           rotation='90',

           ha='center',

           fontsize=14)

plt.show()

问题是这是沿 提供渐变y-axis,而我想要径向渐变,例如:

http://img1.mukewang.com/63aab8c50001741d01800191.jpg

青春有我
浏览 138回答 1
1回答

尚方宝剑之说

我认为您只需要调整要插值的矩阵,使该矩阵中的梯度指向右上角:import matplotlib.pyplot as pltimport numpy as npfig = plt.figure()ax = fig.add_subplot(111)ticks = ["Low", "Moderate", "High"]plt.xlabel(r"x $\longrightarrow$", fontsize=14)plt.ylabel(r"y $\longrightarrow$", fontsize=14)plotlim = plt.xlim() + plt.ylim()print(plotlim)ax.imshow([[0.5, 0.5, 0.5], [0, 0.5, 0.5], [0, 0, 0.5]],          cmap=plt.cm.Reds,          interpolation='bicubic',          extent=plotlim, vmin=0, vmax=1)plt.xticks(np.arange(len(ticks)) / 2, ticks, fontsize=14)plt.yticks(np.arange(len(ticks)) / 2,           ticks,           rotation='90',           ha='center',           fontsize=14)fig.savefig("test.png")这给出了以下图片:编辑:您还可以在不进行插值的情况下构建渐变以获得漂亮的圆形渐变:x = np.linspace(0, 1, 256)y = np.linspace(1, 0, 256)xArray, yArray = np.meshgrid(x, y)plotArray = np.sqrt(xArray**2 + yArray**2)fig = plt.figure()ax = fig.add_subplot(111)ax.imshow(plotArray,          cmap=plt.cm.Reds,          vmin=0,          vmax=1)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python