我有大熊猫系列的复数,我想绘制。目前,我循环遍历每个点并为其指定颜色。我宁愿生成绘图而不需要遍历每个点...使用Series.plot()
会更好。将系列转换为numpy是可以的。
以下是我目前所拥有的一个例子:
import pandas as pd
import numpy as np
from matplotlib import pyplot
s = pd.Series((1+np.random.randn(500)*0.05)*np.exp(1j*np.linspace(-np.pi, np.pi, 500)))
cmap = pyplot.cm.viridis
for i, val in enumerate(s):
pyplot.plot(np.real(val), np.imag(val), 'o', ms=10, color=cmap(i/(len(s)-1)))
pyplot.show()
答案 0 :(得分:3)
您可以使用pyplot.scatter
,它允许根据值对点进行着色。
pyplot.scatter(np.real(s), np.imag(s), s=50, c=np.arange(len(s)), cmap='viridis')
答案 1 :(得分:2)
你可以简单地绘制系列的实部和虚部,而不需要循环。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
s = pd.Series((1+np.random.randn(500)*0.05)*np.exp(1j*np.linspace(-np.pi, np.pi, 500)))
plt.plot(s.values.real,s.values.imag, marker="o", ls="")
plt.show()
但是,如果要使用不同的颜色,则需要使用散点图:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
s = pd.Series((1+np.random.randn(500)*0.05)*np.exp(1j*np.linspace(-np.pi, np.pi, 500)))
plt.scatter(s.values.real,s.values.imag, c = range(len(s)), cmap=plt.cm.viridis)
plt.show()