9

Gnuplot 提供了许多用于散点图的点样式,例如十字、星形、正方形、圆形等。可用的点类型可以通过使用命令来演示。test

但是,对于特定的应用程序,我需要不同的符号,并且我需要显示这些符号的图例条目。

特别是,我需要四个以上可以在轮廓和填充状态下绘制的符号(例如指向左侧或右侧的三角形、平行四边形或非方形矩形)。

有许多方法可以使用其他形状(每种方法都对终端有一些要求,例如 unicode 支持):

  • 使用 PNG 图像
  • 用于set label '□' at 3,4每个点,其中 □ 可以替换为任何 unicode 字符,例如◁、▶、▭、▮等)
  • 使用plot ... with labels并提供 unicode 字符作为标签

所有这些方法的问题是我无法获得正确的图例(键)条目,包括符号。

我考虑过自己绘制图例,但我认为这不可行的原因有两个:

  • 为了将图例绘制在图表的右侧(或图表内的右下方),我需要计算图例的宽度,这取决于字体。
  • 一些图可能同时包含一条线和一个点(如using linespoints常规 Gnuplot 点类型),它们都必须显示在图例中。

我正在以编程方式生成 Gnuplot 输入文件,因此明确列出所有点的方法(如set label上面提到的方法)或需要一些计算的方法是可以的。

4

3 回答 3

12

这不会是一个答案,因为我要告诉你改变你的终端......我知道......

尚无法在 gnuplot 中添加用户定义的点形状,但 PostScript 终端允许大约 70 种不同的形状:后记点类型 http ://www.cp.cmc.osaka-u.ac.jp/~fumiko/tips/gnuplot_pt.jpg

在下面的讨论中,他们声明没有添加用户定义点类型的通用机制。它们附带您在问题中提供的解决方案。 https://groups.google.com/forum/?fromgroups=#!topic/comp.graphics.apps.gnuplot/in57UNxG2o0

我认为实现您的目标的一种方法可能是

  1. 使用 postscript 处理“人类可读”的 .ps 文件,使用默认点类型。
  2. “后处理”(=解析).ps 文件(对我来说这听起来像 Inception),将旧时尚丑陋的默认点类型更改为您喜欢的类型,从 unicode 字符到家庭绘制的形状。
  3. ps2pdf 或 ps2somethingyoulike 处理后的 .ps 文件。

恐怕我将不得不面对同样的问题,所以如果您找到更简单的解决方案,请告诉全世界:)

于 2013-05-03T11:56:53.587 回答
2

如果有人想弄乱 postscriptp 路线,这里是一个简单的例子:

每个符号在 ps 文件中由名称定义(参见 Pascali 的答案中的表格),例如:

/BoxF  { 
      ....3 or 4 lines of terse code ...
        } def

替换为您自己的定义:这是一个大写字母 Pi。

/BoxF {
 stroke gsave moveto    % required, this finishes prior line and moves to point
0 30 rmoveto  % nudge  symbol to get it centered properly
 /Symbol findfont 120 scalefont setfont (P) Cshow 
 grestore
     } def

这个简单的例子可能需要为不同类型的图调整数字(字体大小)。

如果你想使用你的 postscript 解释器不知道的字体,你需要手动包含它们。

于 2013-05-03T20:14:43.303 回答
2

与 Pascail 的回答类似,您也可以使用 SVG 而不是 Postscript 来执行此操作。

SVG 基于 XML,可能会也可能不会比 Postscript(使用 XML 库)更容易处理。它还支持unicode。

于 2013-05-07T10:09:05.507 回答