показать две цветные полосы в matplotlib - PullRequest
1 голос
/ 07 августа 2020

cplot пытается показать комплексные данные на одном графике, а не на двух (для абсолютного значения и угла). Это достигается путем сопоставления абсолютного значения яркости и комплексного угла цветности. Построение работает неплохо, например, гамма-функция:

import cplot
from scipy.special import gamma

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

введите описание изображения здесь

Теперь я хотел бы аннотировать график цветными полосами. Мне нужно два из них: один для яркости (от черного к белому, от 0 до бесконечности), один для цветности (от 0 до 2 * пи). Как добавить две цветные полосы в мпл?

1 Ответ

1 голос
/ 07 августа 2020

Я бы сказал, что для вас, что лучше было бы показать двумерную цветовую карту вместо двух сразу.

Что-то вроде следующего.

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

Given the cyclic nature of the angle, it might be a better idea to make a polar plot. The example is not the best, but I could not figure out how to tweak cplot to make it.

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

If you insist in adding two colormaps, I would suggest to check этот ответ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...