【问题标题】:How to make Gnuplot use the "unicode minus" sign for negative numbers如何让 Gnuplot 对负数使用“unicode 减号”符号
【发布时间】:2015-03-25 00:27:55
【问题描述】:

Gnuplot 在打印负数(例如,刻度标签)时使用连字符减号 (U+002D)。我想让 Gnuplot 使用 unicode 减号 (U+2212)。

通常,我依赖以下解决方法之一:

  1. 使用set xtics (-0.05 "−0.05", ...)显式设置每个刻度线的标签;
  2. 使用 LaTeX 驱动程序(例如,epslatex)导出绘图并将数字括在 $$ 中(例如,set format x "$%.2f$")。

但是,上述解决方案都不吸引我。有什么方法可以让 Gnuplot 自动为负数使用正确的排版约定?

【问题讨论】:

  • 没有标志或选项可以将 unicode 减号与 gnuplot 一起使用。
  • 感谢@Christoph 的回答。我刚刚发现 Matplotlib 有一个flag for this。你认为未来版本的 Gnuplot 有没有可能有类似的东西?
  • 是的,如果有功能请求并且有人实现了这个:) 说真的,看到 5.0 引入了一个新的格式说明符 %h 来为指数符号生成更好的格式,我认为机会得到这个是相当不错的。

标签: unicode gnuplot


【解决方案1】:

不幸的是,我能找到的唯一“解决方案”是使用 sprintf 而不是使用 xtics set format x " " 来绘制带有格式化 x 轴值的标签:

set format x " "
plot 'data', \
  'data' u 1:(0):(($1 >= 0 ? $1 : sprintf('{\055}%d', -$1))) notitle w labels offset graph 0, -0.55

您必须在 PostScript 字符代码中找到一个符号而不是接近 unicode 减号的 {\055}

此代码假设平均数据值为 0,然后检查 x 值 $1 是否为正 (test ? yes : no)

【讨论】:

  • 谢谢,Sébastien,您的解决方案的优点是不需要用户手动重新输入数字两次,如我的示例所示。鉴于当前 Gnuplot 版本的局限性,我认为这是可用的最佳解决方案。
【解决方案2】:

从 5.0.5 版开始,gnuplot 有一个set minussign 命令。设置后,gprintf 函数也用于设置抽动标签,使用印刷减号 (U+2212) 代替连字符:

set encoding utf8
set minussign
plot x

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2010-11-12
    • 2015-05-08
    • 2021-11-10
    • 2016-12-02
    • 2012-01-01
    相关资源
    最近更新 更多