Gnuplot:点大小单位

Gnuplot:点大小单位,plot,gnuplot,Plot,Gnuplot,如何以绘图坐标为单位设置gnuplot中的点大小 换句话说,如果我增加xrange,点应该会变小 看起来这一切都取决于终端。有解决方法吗?这里有一个使用内联数据的小示例 plot '-' u 1:2:1 ps variable 1 2 2 3 3 4 4 5 5 6 e 请注意,虽然可以使用数据文件中的列更改pointsize,但我不知道有什么方法可以指定每个点的大小,因为pointsize(甚至pointtype)是一个终端相关的量。我能想到的唯一解决办法是通过端子相

如何以绘图坐标为单位设置gnuplot中的点大小

换句话说,如果我增加xrange,点应该会变小


看起来这一切都取决于终端。有解决方法吗?

这里有一个使用内联数据的小示例

plot '-' u 1:2:1 ps variable
  1 2
  2 3
  3 4
  4 5
  5 6
  e
请注意,虽然可以使用数据文件中的列更改pointsize,但我不知道有什么方法可以指定每个点的大小,因为pointsize(甚至pointtype)是一个终端相关的量。我能想到的唯一解决办法是通过端子相关值缩放点

default_value=1.0
func(x)=1.0*x  #Change this to change the functional dependence of the pointsize on x.
scale_point(x)=(GPVAL_TERM=="postscript") ? 1.0*func(x) :\
               (GPVAL_TERM=="png") ?        2.0*(x) :\
               default_value
plot "mydata.dat" u 1:2:(scale_point($1)) w pt ps variable
这很难看,但它应该可以完成任务--您也可以编写一个类似的函数,返回pointtype,以实现某种终端独立性

编辑

注意,我的点的大小随着x变大而线性增加,但是你可以替换任何你想使点变小的函数。 我想说的是,我不相信这个选项存在,因为正如你们所说的“所有这些都是终端依赖的”。我试图提供一个丑陋的黑客程序,允许您以最小的干预在每个绘图的基础上修改它——允许不同的终端,等等

编辑2

在回复您的评论时,我记得gnuplot文档中的一个奇怪的小角落可能会有所帮助

set style fill transparent solid noborder  #whatever fillstyle you want...
plot 'mydata' u 1:2:3 w circles

请参见帮助圈。。。我不确定这项功能是什么时候引入的,可能是gnuplot 4.3,但是如果您使用的是4.2,那么请尝试一下,让我知道它是如何运行的…

如果我正确理解了这个问题,您只希望点大小是xrange的一个递减函数。打印点的大小以及它们的外观取决于终端。但要获得你想要的基本行为并不难

首先,定义一个函数来返回pointsize。让我们试试看

sps(a,b) = 1./(b-a)
设置您的xrange:

set xrange [0:3]
制作一个不使用的绘图:

plot sin(X)
我们这样做是为了定义gnuplot的一些特殊变量。现在我们可以做了

plot sin(x) with points pt 7 ps sps(GPVAL_X_MIN, GPVAL_X_MAX)

如果现在重置xrange并重新输入两个绘图命令,您将看到pointsize的变化,与xrange成反比。您可能希望pointsize的函数与我使用的“sps”示例不同。我希望这是你想要的东西。

这不是我所问问题的答案。我知道如何使点大小可变。我不知道如何指定gnuplot称为“first”的坐标系中的大小。我知道。我想说的是,我不相信这个选项存在,因为正如你们所说的“所有这些都是终端依赖的”。我试图提供一个丑陋的黑客程序,让你以最小的干预在每个情节的基础上修改它——允许不同的终端,等等。@hanno,显然我说得太快了,这是可能的(至少如果你想让你的点显示为圆的话)。看我的第二次更新。太棒了!谢谢这就是我一直在找的,没问题。谢谢你的提问——我也学到了一些新东西!对于不使用的绘图,我可以建议使用
unknown
终端吗?我猜这就是它的全部目的。然而,我很确定问题的作者想要对点大小进行精确的控制。