我正在使用matplotlib.scatter
绘制系统的分叉图,该系统经过周期性倍增的路径而变得混乱。使用可以找到的here数据,我使用以下命令:
import numpy as np
import matplotlib.pyplot as plt
p_chi0,b_chi0=np.loadtxt('data.dat')
plt.scatter(p_chi0,b_chi0,s=0.2,marker=".")
plt.xlim([2.35,2.6])
plt.show()
我得到以下图:
但是,您可以看到线条不平滑。即使存在这些分歧,也有办法插值这类数据,而不是一一对应吗?
答案 0 :(得分:2)
在将每个数据点绘制为一个像素大小时,您将获得最最准确的数据表示形式。
import numpy as np
import matplotlib.pyplot as plt
p, b = np.loadtxt('data/bifurcation.txt')
fig, ax = plt.subplots(figsize=(8,6), dpi=100)
# Plot one pixel sizes markers
ax.plot(p,b, ls="", marker=",")
# or with scatter.
#ax.scatter(p,b, s=(72./fig.dpi)**2, marker='o', lw=0,)
ax.set_xlim([2.35, 2.6])
fig.savefig('bifurcation.png')
plt.show()
但是,这看起来一点也不流畅。通过选择较大的标记大小,然后增加dpi和图形大小,您将获得平滑表示。然后将图像重新采样到原始尺寸将使结果看起来更平滑。
由于基于Agg的后端在标记标记时不准确,因此使用基于Cairo的后端也将是有益的。
import matplotlib
matplotlib.use("Qt5Cairo")
import numpy as np
import matplotlib.pyplot as plt
p, b = np.loadtxt('data/bifurcation.txt')
fig, ax = plt.subplots(figsize=(8,6), dpi=300)
ax.scatter(p,b, s=(2*72./fig.dpi)**2, marker='o', lw=0)
ax.set_xlim([2.35, 2.6])
fig.savefig('bifurcation.png')
plt.show()
答案 1 :(得分:0)