【问题标题】:Saving 3D-plot in PDF 3D with Python使用 Python 将 3D 绘图保存为 PDF 3D
【发布时间】:2016-06-01 05:20:36
【问题描述】:

我已经用 python 和 pyplot 生成了一个 3D 图。我可以将此图导出为 PDF。这很无聊,有时.. 平面 3D 情节可能难以阅读/理解。

但是,PDF 支持交互式 3D 模型,例如 CAD 模型。这让我想知道是否可以将 matplotlib 或类似的东西生成的 3D 图导出到 3D PDF?存储漂亮的 3D 绘图将是惊人的!如果是这样,我该怎么做?

【问题讨论】:

    标签: python pdf matplotlib 3d


    【解决方案1】:

    如果您想使用PDF,我相信彩色素材最好打开rasterized=True,否则有时图形太大而无法完成:

    3D 绘图示例:

    from mpl_toolkits import mplot3d
    
    import numpy as np
    import matplotlib.pyplot as plt
    
    fig = plt.figure()
    ax = plt.axes(projection="3d")
    
    z_line = np.linspace(0, 15, 1000)
    x_line = np.cos(z_line)
    y_line = np.sin(z_line)
    ax.plot3D(x_line, y_line, z_line, 'gray')
    
    z_points = 15 * np.random.random(100)
    x_points = np.cos(z_points) + 0.1 * np.random.randn(100)
    y_points = np.sin(z_points) + 0.1 * np.random.randn(100)
    ax.scatter3D(x_points, y_points, z_points, c=z_points, cmap='hsv',rasterized=True);
    
    plt.savefig('test2.pdf',format='pdf')
    plt.show()
    

    【讨论】:

    • 将“平面”3D 图输出为 PDF 格式不是问题。问题是在 PDF 中创建交互式 3D 图,这个答案没有解决。
    【解决方案2】:

    到目前为止,与其说是我的研究总结,不如说是一个答案:

    • previous question 的问题几乎相同,但没有得出任何结论

    • .pdf 支持两种内部 3d 格式 - u3d(从版本 7 开始)和 prc(从版本 8 开始)。 prc 是一种更复杂但更紧凑的格式。

    • (c. 2006):Acrobat 3d 支持更多格式 - 超过 40 种 - 但通过将它们转换为 u3d 进行导入 (reference)

    • (2013 年 12 月):matplotlib 的绘图核心仅为 2d; mplot3d 只是一种解决方法,所有内容在渲染之前都会投影到 2d。 (reference) 链接到GlumPy

    目前,我看到了两种可能的方法:

    • 为matplotlib写一个新的3d输出引擎到u3d

    • 为 OpenGL 编写 matplotlib 的 3d 渲染器(Acrobat 3d 可以捕获活动 OpenGL 帧的内容)

    【讨论】:

    • matplotlib 不会像 ggplot2 (R) 或 plotly 那样序列化它们的图形,因此不幸的是,几乎不可能将 mpl 图形从一种格式转换为另一种格式。在此讨论:github.com/matplotlib/matplotlib/wiki/MEP25
    猜你喜欢
    • 2021-08-10
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 2021-05-05
    • 1970-01-01
    相关资源
    最近更新 更多