带日志图的 Type 1 字体

2024-05-05

我正在尝试使用 Matplotlib 图表作为相机就绪的一部分 提交,出版社要求使用Type 1字体 仅有的。

我发现 PDF 后端很乐意输出 Type-1 字体 具有线性 Y 轴的简单图形,但输出 Type-3 字体 对数 Y 轴。

使用对数 yscale 会导致使用 mathtext,这似乎 使用 Type 3 字体,大概是因为默认使用指数字体 符号。我可以使用一个丑陋的黑客来解决这个问题 - 使用 pyplot.yticks() 强制轴刻度不使用指数 - 但是 这将需要移动绘图区域以容纳大标签 (如 10 ^ 6)或将轴写为 10、100、1K 等,以便它们适合。

我已经测试了下面的示例 截至今天的 matplotlib 主分支以及 1.1.1,它生成 相同的行为,所以我不知道这是一个错误,可能只是 意外的行为。

#!/usr/bin/env python
# Simple program to test for type 1 fonts. 
# Generate a line graph w/linear and log Y axes.

from matplotlib import rc, rcParams

rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
#rc('font',**{'family':'sans-serif','sans-serif':['computer modern sans serif']})

# These lines are needed to get type-1 results:
# http://nerdjusttyped.blogspot.com/2010/07/type-1-fonts-and-matplotlib-figures.html
rcParams['ps.useafm'] = True
rcParams['pdf.use14corefonts'] = True
rcParams['text.usetex'] = False

import matplotlib.pyplot as plt

YSCALES = ['linear', 'log']

def plot(filename, yscale):
    plt.figure(1)
    xvals = range(1, 2)
    yvals = xvals
    plt.plot(xvals, yvals)
    plt.yscale(yscale)
    plt.savefig(filename + '.pdf')

if __name__ == '__main__':
    for yscale in YSCALES:
        plot('linegraph-' + yscale, yscale)

有谁知道一种使用对数轴获取 Type 1 字体的干净方法吗?

Thanks!


这是我用于相机就绪提交的代码:

from matplotlib import pyplot as plt

def SetPlotRC():
    #If fonttype = 1 doesn't work with LaTeX, try fonttype 42.
    plt.rc('pdf',fonttype = 1)
    plt.rc('ps',fonttype = 1)

def ApplyFont(ax):

    ticks = ax.get_xticklabels() + ax.get_yticklabels()

    text_size = 14.0

    for t in ticks:
        t.set_fontname('Times New Roman')
        t.set_fontsize(text_size)

    txt = ax.get_xlabel()
    txt_obj = ax.set_xlabel(txt)
    txt_obj.set_fontname('Times New Roman')
    txt_obj.set_fontsize(text_size)

    txt = ax.get_ylabel()
    txt_obj = ax.set_ylabel(txt)
    txt_obj.set_fontname('Times New Roman')
    txt_obj.set_fontsize(text_size)

    txt = ax.get_title()
    txt_obj = ax.set_title(txt)
    txt_obj.set_fontname('Times New Roman')
    txt_obj.set_fontsize(text_size)

在运行之前字体不会出现savefig

Example:

import numpy as np

SetPlotRC()

t = np.arange(0, 2*np.pi, 0.01)
y = np.sin(t)

plt.plot(t,y)
plt.xlabel("Time")
plt.ylabel("Signal")
plt.title("Sine Wave")

ApplyFont(plt.gca())
plt.savefig("sine.pdf")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带日志图的 Type 1 字体 的相关文章

随机推荐

  • C# - 使用 Linq 获取 Attribute 的属性

    我有一个属性 它本身就有属性 我想访问这些属性之一 布尔值 并检查它是否正确 我能够检查属性是否已设置 但这就是全部 至少对于 linq 来说是这样 属性 public class ImportParameter System Attrib
  • GreenDao交易

    我在用着GreenDao存储大量数据 来自休息服务 我的很多实体都与关系相关 一切都很顺利 但明天我必须实施坚如磐石的工作流程 当我加载数据时我必须检查是否发生错误 如果是这样 我必须确保没有存储任何内容在 SQLite 数据库中 通常我会
  • 快速比较两个自定义对象

    我在 Swift 中定义了以下协议 protocol RecordingObserver func aFunc 我必须在某个地方比较实现此协议的两个对象 以检查它们是否相同 我面临的问题是显然 Swift 不允许我们这样做 func are
  • 连接2个表区分大小写

    我有 2 个表 需要获取品牌代码的结果 例如 在数据库中 我有两个不同的品牌 但它们的代码是相同的 只有小写和大写不同 例如 代码名称 关于耐克 和阿迪达斯 如何在代码上内连接 2 个表以分别获取这 2 个表 现在 在内连接之后我得到了这
  • 为什么这些双精度数的返回值为-1.#IND?

    I have double score cvMatchContourTrees CT1 CT2 CV CONTOUR TREES MATCH I1 0 0 cout lt
  • 错误:java.lang.NoSuchMethodError:org/springframework/asm/ClassVisitor.(I)V

    我的 POM 中有这两个依赖项 我认为这是造成此问题的原因 但我尝试了许多不同的方法和更新的版本 但没有任何效果对我有用 有人可以帮忙吗 XML文件
  • 我写了一个 SQL 查询但没有运行,为什么? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 当前表 EmployeeID CompanyID EmployeeCode EmployeeName 1001 C001 11919 ABC
  • Azure 流分析:如果作业查询是按天计算的 TUMBLINGWINDOW,流分析作业何时实际处理数据?

    Context 我使用 Azure 门户创建了一个流作业 该作业使用每日 TUMBLINGWINDOW 聚合数据 下面附加了一个从文档修改而来的代码片段 它显示了类似的逻辑 SELECT DATEADD day 1 System Times
  • 同步 jQuery 动画

    我正在尝试同时获得淡入 不透明度切换 和边框淡入 使用jquery 动画颜色 http www bitstorm org jquery color animation 同时开火 但我遇到了一些麻烦 有人可以帮忙查看以下代码吗 fn exte
  • iPhone UITableView - 删除按钮

    我正在使用 滑动删除 功能UITableView 问题是我正在使用定制的UITableViewCell这是在每个项目的基础上创建的 UITableViewCell tableView UITableView aTableView cellF
  • JavaScript 类继承

    谁能告诉我为什么我的 showDiv boo 在类的方法中未定义 我也无法访问我的类的方法 这是我的 Blink 类及其属性和方法 function Blink div this div div Blink prototype counte
  • pyspark:将 schemaRDD 保存为 json 文件

    我正在寻找一种将数据从 Apache Spark 以 JSON 格式导出到各种其他工具的方法 我认为一定有一种非常简单的方法来做到这一点 示例 我有以下 JSON 文件 jfile json key value a1 key2 value
  • 在 JavaScript 中添加事件的最佳方式是什么?

    我发现在 JavaScript 中设置事件有两种主要方法 直接在标签内添加一个事件 如下所示 a href do foo a 通过 JavaScript 设置它们 如下所示 a href do bar a 并在 a 中添加一个事件
  • Java:如何复制对象数组?

    现在 我有一个 Point 对象数组 我想制作一个COPY该数组的 我尝试过以下方法 1 Point temp mypointarray 2 Point temp Point mypointarray clone 3 Point temp
  • Ionic 4 网络检查

    如何检查 Ionic 4 中每个页面的互联网连接 需要的是 如果出现网络错误 我需要将应用程序重定向到错误页面 您可以尝试官方的 Ionic Network 插件 dochere https ionicframework com docs
  • 如何修复 Delphi Prism ASP.NET 错误:“解析器错误消息:‘Oxygene’不是受支持的语言”

    我在 Delphi Prism 中编写了一个 ASP NET Web 应用程序 不是网站 在我的开发机器上一切正常 但是当我将其安装在测试服务器上时 出现以下错误 Server Error in MyApp Application Pars
  • 接口作为类型约束和接口作为参数之间的区别?

    如果我想创建一个采用实例的方法IList作为参数 或任何其他接口 但让我们使用IList作为一个例子 我可以创建一个带有类型约束的通用方法 例如 public static void Foo1
  • SalesForce.com:通过 PHP 检索自定义字段

    我在 SalesForce DE 站点中创建了一个简单的自定义联系人对象 API 名称为 Contact c 该对象有一个 Full Name c 字段 用于测试连接 然后我尝试通过 PHP 检索所有联系人 特别是此字段 try mySfo
  • Chrome 的用户代理切换器

    我正在寻找适用于 Chrome 的用户代理切换器 正在搜索Chrome 网上应用店 https chrome google com webstore没有拿出一个简单的切换器 我知道我可以通过命令行和参数运行浏览器 Google Chrome
  • 带日志图的 Type 1 字体

    我正在尝试使用 Matplotlib 图表作为相机就绪的一部分 提交 出版社要求使用Type 1字体 仅有的 我发现 PDF 后端很乐意输出 Type 1 字体 具有线性 Y 轴的简单图形 但输出 Type 3 字体 对数 Y 轴 使用对数