我想使用matplotlib绘制统一的根,每个都是不同颜色的箭头。
它应该看起来像一个星形,箭头等间距向外指向单位圆。
matplotlib有绘制箭头的功能,但是有没有办法用复数来做到这一点,还是我必须转换为真正的笛卡儿?
此外,是否存在一系列库存颜色,因此无论我希望显示多少根,它都会给我一系列不同的颜色? (而不是说七个几乎相同的红色)
答案 0 :(得分:4)
import numpy as np
import pylab as plt
import itertools
n = 13
roots = np.roots( [1,] + [0,]*(n-1) + [-1,] )
colors = itertools.cycle(['r', 'g', 'b', 'y'])
plt.figure(figsize=(6,6))
for root in roots:
plt.arrow(0,0,root.real,root.imag,ec=colors.next())
plt.xlim(-1.5,1.5)
plt.ylim(-1.5,1.5)
plt.show()
统一的根源以类似于this answer的方式计算。
更新:如果您想使用seaborn
,您可以轻松获得独特的颜色:
import numpy as np
import pylab as plt
import itertools
import seaborn as sns
n = 13
colors = sns.color_palette("hls", n)
roots = np.roots( [1,] + [0,]*(n-1) + [-1,] )
# Sorted by angle
idx = np.argsort([np.angle(x) for x in roots])
roots = roots[idx]
plt.figure(figsize=(6,6))
for root,c in zip(roots,colors):
plt.arrow(0,0,root.real,root.imag,ec=c,lw=3)
plt.xlim(-1.25,1.25)
plt.ylim(-1.25,1.25)
plt.show()