在matplotlib中显示两个颜色条

时间:2020-08-07 10:51:58

标签: matplotlib

cplot尝试在一个图中而不是两个图中显示复数值数据(对于绝对值和角度)。通过将绝对值映射到亮度,将复角映射到色度来实现。绘图效果很好,例如,伽玛函数:

import cplot
from scipy.special import gamma

cplot.show(gamma, -5, +5, -5, +5, 100, 100)

enter image description here

现在,我想用彩条注释该情节。我需要两个:一个用于亮度(黑到白,0到无穷大),一个用于色度(0到2 * pi)。如何在mpl中添加两个颜色条?

1 个答案:

答案 0 :(得分:1)

我想说的是,对于您而言,最好是显示双变量颜色图,而不是一次显示两个颜色图。

类似于以下内容。

import numpy as np
from scipy.special import gamma
import matplotlib.gridspec as gridspec
import matplotlib.pyplot as plt
import cplot

fig = plt.figure(constrained_layout=True)
gs = fig.add_gridspec(6, 6)

# Plot
f_ax1 = fig.add_subplot(gs[:, 0:4])
cplot.plot(gamma, -5, +5, -5, +5, 100, 100)

# Colormap
f_ax2 = fig.add_subplot(gs[4:, 4:])
cplot.plot(lambda z: (1.5**z.real - 1) * np.exp(1j*z.imag),
           0, 2*np.pi, 0, 2*np.pi, 100, 100)
xticks = 1.5**np.array([0, 2, 4, 6])
plt.xticks([0, 2, 4, 6],
           ["{:.2g}".format(val) for val in xticks])
plt.xlabel("Magnitude")
plt.yticks([0, np.pi, 2*np.pi], ["0", "π", "2π"])
plt.ylabel("Angle")
f_ax2.yaxis.tick_right()
f_ax2.yaxis.set_label_position("right")

plt.show()

enter image description here

鉴于角度的周期性,制作极坐标图可能是一个更好的主意。这个例子不是最好的,但是我无法弄清楚如何调整cplot来实现它。

import numpy as np
from scipy.special import gamma
import matplotlib.gridspec as gridspec
import matplotlib.pyplot as plt
import cplot

fig = plt.figure(constrained_layout=True)
gs = fig.add_gridspec(6, 6)

# Plot
f_ax1 = fig.add_subplot(gs[:, 0:4])
cplot.plot(gamma, -5, +5, -5, +5, 500, 500)

# Colormap
f_ax2 = fig.add_subplot(gs[4:, 4:])
cplot.plot(lambda z: z, -10, 10, -10, 10, 500, 500)
plt.xticks([])
plt.yticks([])

plt.show()

enter image description here

如果您坚持添加两个颜色图,我建议检查this answer