如何以绘图坐标为单位在gnuplot中设置磅值?
换句话说,如果我增加xrange,点数应该会变小。
看起来这是所有终端依赖的。有解决方法吗?
答案 0 :(得分:3)
这是一个使用内联数据的小例子......
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
请参阅help circles
...我不确定这个功能何时推出,可能是使用gnuplot 4.3,但是如果你使用的是4.2那么试试看,让我知道它是怎么回事......
答案 1 :(得分:0)
如果我正确理解了这个问题,你只需要将pointize作为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并重新输入两个 plot命令,您将看到pointsize的变化与xrange成反比。您可能想要一个与我使用的“sps”示例不同的pointsize函数。我希望这就像你追求的那样。