m0_62382446 2022-05-03 19:14 采纳率: 100%
浏览 38
已结题

这个matplotlib图表,能不能把这个螺旋的颜色换一下(就是亮的地方变成暗的,暗的地方变成亮的)

img


看看这个图片,我们来看第一个螺旋,中心是紫的,如何把它变成黄的,并且其他螺旋的颜色都把它们颠倒一下。
这是我的代码


import math as m
import numpy as np 
import matplotlib.pyplot as plt 

def intensity(x, y, R=1.343, lamd=589.3e-9, Delta_d=0):
    r2 = x**2 + y**2
    theta = m.pi*r2/(R*lamd) + (2*m.pi*Delta_d)/lamd
    l, c = np.shape(theta)
    i = np.zeros((l, c))
    i = np.array([[m.sin(theta[i, j]) for j in range(c)] for i in range(l)])
    print('1',i,type(i))
    return i

def CalculateI(width, N):
    x = np.linspace(-width, width, N)
    y = np.linspace(-width, width, N)
    [X, Y] = np.meshgrid(x, y)
    I = intensity(-X, -Y)
    print('2',I,type(I))
    return I 

def MakePlot():
    # 建立子图
    fig = plt.figure()
    ax1 = fig.add_subplot(221)
    ax2 = fig.add_subplot(222)
    ax3 = fig.add_subplot(223)
    ax4 = fig.add_subplot(224)

    # 计算四种环的光强分布
    I1 = CalculateI(0.004, 1000)
    I2 = CalculateI(0.003, 1000)
    I3 = CalculateI(0.002, 1000)
    I4 = CalculateI(0.001, 1000)
    #print(I1,I2,I3,I4)

    # 作图
    ax1.imshow(I1)
    ax2.imshow(I2)
    ax3.imshow(I3)
    ax4.imshow(I4)
    plt.show()

MakePlot()


能帮我改一下吗,谢谢!

  • 写回答

2条回答 默认 最新

  • blackoon88 2022-05-03 21:46
    关注

    可以参照以下代码,(cmap参数: 为调整显示颜色 viridis是一种颜色组合,加_r取反)

        ax1.imshow(I1, cmap=plt.cm.viridis_r)
        ax2.imshow(I2, cmap=plt.cm.viridis_r)
        ax3.imshow(I3, cmap=plt.cm.viridis_r)
        ax4.imshow(I4, cmap=plt.cm.viridis_r)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月12日
  • 已采纳回答 5月4日
  • 创建了问题 5月3日