Gnuplot:点大小单位
如何以绘图坐标为单位设置gnuplot中的点大小 换句话说,如果我增加xrange,点应该会变小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)是一个终端相关的量。我能想到的唯一解决办法是通过端子相
看起来这一切都取决于终端。有解决方法吗?这里有一个使用内联数据的小示例
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
终端吗?我猜这就是它的全部目的。然而,我很确定问题的作者想要对点大小进行精确的控制。