Gnuplot:使用自定义点形状,带有图例条目

时间:2013-04-24 10:07:35

标签: charts gnuplot symbols shape

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

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

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

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

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

所有这些方法的问题在于我无法获得包含符号的正确图例(关键)条目。

我考虑过自己策划这个传奇,但有两个原因让我不认为这是可行的:

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

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

3 个答案:

答案 0 :(得分:11)

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

无法在gnuplot中添加用户定义的点形状,但PostScript终端允许大约70种不同:Postscript point types 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. “post-process”(=解析).ps文件(对我来说听起来像是Inception)将旧的丑陋的默认点类型更改为你喜欢的东西,从unicode chars到home绘制的形状。
  3. ps2pdf或ps2something您喜欢已处理的.ps文件。
  4. 我担心我将不得不面对同样的问题,所以如果你找到一个更简单的解决方案,让世界知道:)

答案 1 :(得分:2)

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

每个符号都是由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解释器不知道的字体,您需要手动包含它们。

答案 2 :(得分:2)

与Pascail的答案类似,您也可以使用SVG代替Postscript。

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