为了账号安全,请及时绑定邮箱和手机立即绑定

matplotlib径向渐变背景如何实现

matplotlib径向渐变背景如何实现

青春有我 2022-12-27 17:19:04
我正在尝试将 matplotlib 背景设置为: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([[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,而我想要径向渐变,例如:
查看完整描述

1 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

我认为您只需要调整要插值的矩阵,使该矩阵中的梯度指向右上角:


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

这给出了以下图片:

//img1.sycdn.imooc.com//63aab8d60001efb105110451.jpg

编辑:


您还可以在不进行插值的情况下构建渐变以获得漂亮的圆形渐变:


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)

//img1.sycdn.imooc.com//63aab8e30001199904890437.jpg

查看完整回答
反对 回复 2022-12-27
  • 1 回答
  • 0 关注
  • 137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信