cplot尝试在一个图中而不是两个图中显示复数值数据(对于绝对值和角度)。通过将绝对值映射到亮度,将复角映射到色度来实现。绘图效果很好,例如,伽玛函数:
import cplot
from scipy.special import gamma
cplot.show(gamma, -5, +5, -5, +5, 100, 100)
现在,我想用彩条注释该情节。我需要两个:一个用于亮度(黑到白,0到无穷大),一个用于色度(0到2 * pi)。如何在mpl中添加两个颜色条?
答案 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()
鉴于角度的周期性,制作极坐标图可能是一个更好的主意。这个例子不是最好的,但是我无法弄清楚如何调整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()
如果您坚持添加两个颜色图,我建议检查this answer。