python - 动画中的抗锯齿字体

标签 python matplotlib

我正在尝试创建一个包含两个子图的动画——一个是 3D 的,另一个是 2D 的。但是,我似乎无法弄清楚是否有办法从 2D 轴获得更好的字体渲染。我尝试使用 font_manager 进行各种设置,甚至改变 frame_format生的,但我没有成功。有谁知道如何解决这个问题?我用 mpeg4 得到了相同的结果。

奇怪的是,3D 图形似乎正确地呈现了字体。

import numpy as np

import matplotlib
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from mpl_toolkits.mplot3d import Axes3D

w, h = matplotlib.figure.figaspect(.5)
fig = plt.figure(figsize=(w,h))

ax3d  = fig.add_subplot(121, projection='3d')
ax2d  = fig.add_subplot(122)

ax3d.set_xlim(-3, 3)
ax3d.set_ylim(-3, 3)
ax3d.azim = -90
ax3d.elev = 0
ax3d.set_title('Car on Parking Ramp')

ax2d.set_xlim(-20,20)
ax2d.set_ylim(-20,20)
ax2d.set_ylabel('y')
ax2d.set_xlabel('x')
ax2d.set_title('Intersection with z=0')

''' Helix '''
K = 3          ## Angular velocity
H = 2*np.pi    ## Height

t = np.linspace(0, H, 100, endpoint=True)

x = np.cos(K*t)
y = np.sin(K*t)
z = H - t

ax3d.plot(x, y, z, color='k')

''' z = 0 Plane '''
xx, yy = np.meshgrid([-20,20], [-20,20])
ax3d.plot_surface(xx, yy, 0, alpha=0.3, facecolor='b', rstride=1, cstride=1, shade=True)
ax3d.set_axis_off()

''' Tangent Line Data '''
xdata = np.array([ np.cos(K*t), np.cos(K*t) - K*(H - t)*np.sin(K*t) ])
ydata = np.array([ np.sin(K*t), np.sin(K*t) + K*(H - t)*np.cos(K*t) ])

''' Graph Lines '''
proj,     = ax2d.plot([],[])
tangent,  = ax3d.plot([], [], [], color='b')


def update_graph(n, tangent, proj, xdata, ydata):    
    tangent.set_data(xdata[:,n],
                     ydata[:,n])

    tangent.set_3d_properties([H - t[n], 0])

    proj.set_xdata(xdata[1,:n])
    proj.set_ydata(ydata[1,:n])


ani = animation.FuncAnimation(fig, update_graph, len(t), 
                              fargs=(tangent, proj, xdata, ydata), interval=75, blit=True)

ani.save('im.gif', writer='imagemagick', fps=10)
#ani.save('im.mp4', extra_args=['-vcodec', 'libx264'])

Results

最佳答案

对于遇到同样问题的人来说,这确实与 matplotlib 后端有关。

使用不同的后端可能会有帮助。就我而言,

%matplotlib nbagg

解决了(感谢链接问题:Pixelated fonts when plot is saved as jpeg)。

关于python - 动画中的抗锯齿字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32804900/

相关文章:

python - 从模块导入函数失败,但可以导入类

python - 如何更新 certifi 的根证书?

python - 显示 matplotlib 动态创建的图例

python - 在 matplotlib 图中显式标记端点

python - 将大型 NumPy 数组写入文件的有效方法

python - Python尝试除错误外,程序崩溃

python - 根据时间分割推文

python - 如何在Python中将多个直方图堆叠在一个图中?

python - 如何使用 matplotlib 在现有绘图上绘制 float 饼图

python - 将第二个图例添加到散点图