这种图像可以通过创建一个极坐标子图,然后使用ax.bar
方法: http: //matplotlib.org/examples/pie_and_polar_charts/polar_bar_demo.html
通过调整它,你可以做类似的事情:
import numpy as np
import matplotlib.pyplot as plt
N = 40
theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)
radii = np.random.uniform(-20,20,N)
width = 2*np.pi / N
ax = plt.subplot(111, polar=True)
ax.grid(False)
bars1 = ax.bar(theta, radii, width=width, bottom=40.0)
bars2 = ax.bar(theta, radii, width=width, bottom=100.0)
# Use custom colors and opacity
for r, bar in zip(radii, bars1):
bar.set_facecolor( 'r' if r>0 else 'g' )
bar.set_alpha(0.5)
plt.show()
fig.savefig("figure_1.png")
matplotlib 库中有很多示例:http:
//matplotlib.org/gallery.html
现在,如果你真的有那么多复杂的图像,matplotlib 可能会很困难,因为它没有真正优化来进行快速图形计算。
但是你已经保存了这些图像,你可以加载它们并处理它们。这可能确实更快:
例如,我将前一个保存为 png,然后我可以加载它scipy.misc.imread
(请注意,这适用于任何 jpeg/png/etc.. 图像,甚至不是从 matplotlib 生成的图像),用 绘制它imshow
,然后用通常plot
,您只需要注意使用正确的坐标:
import numpy as np
import matplotlib.pyplot as plt
import scipy.misc
fig = plt.figure()
ax = fig.add_subplot(111)
ax.grid(False)
img = scipy.misc.imread("figure_1.png")
ax.imshow(img)
ax.plot([400,500],[300,200],'k', linewidth=4)
plt.show()