12

我正在使用“gnuplot”绘制带点的折线图:

set style data linespoints
set xlabel "number"

set ylabel "Dollars"
set yrange [0:250]

如何增加图表的宽度,以便当我有更多的“x”时,我希望我的图表更多的是矩形而不是正方形?

我怎样才能增加我的'y轴'的间隔?现在,它只是为我的 y 轴上的每 50 个标记绘制一个标记?

4

3 回答 3

14

听起来您希望您的输出根据正在绘制的数据动态调整大小。这是一个执行此操作的脚本:

#!/usr/bin/env gnuplot

# don't make any output just yet
set terminal unknown

# plot the data file to get information on ranges
plot 'data.dat' title 'My Moneys'

# span of data in x and y
xspan = GPVAL_DATA_X_MAX - GPVAL_DATA_X_MIN
yspan = GPVAL_DATA_Y_MAX - GPVAL_DATA_Y_MIN

# define the values in x and y you want to be one 'equivalent:'
# that is, xequiv units in x and yequiv units in y will make a square plot
xequiv = 100 
yequiv = 250 

# aspect ratio of plot
ar = yspan/xspan * xequiv/yequiv

# dimension of plot in x and y (pixels)
# for constant height make ydim constant
ydim = 200 
xdim = 200/ar

# set the y tic interval
set ytics 100 

# set the x and y ranges
set xrange [GPVAL_DATA_X_MIN:GPVAL_DATA_X_MAX]
set yrange [GPVAL_DATA_Y_MIN:GPVAL_DATA_Y_MAX]

# set the labels
set title 'Dollars in buckets'
set xlabel 'number'
set ylabel 'Dollars'

set terminal png size xdim,ydim
set output 'test.png'
set size ratio ar

set style data linespoints

replot

对于这些示例数据:

0 50
50 150 
100 400 
150 500 
200 300

我得到以下情节:

在此处输入图像描述

它应该是正方形的(我将 x 中的 100 个单位定义为 y 中的 250 个单位,并且数据跨越范围 [(0,200),(50,500)])。如果我添加另一个数据点 (400,300),输出文件会更宽,正如预期的那样:

在此处输入图像描述

要回答您的其他问题,您可以设置 y tic 增量:

set ytics <INCREMENT>

上面的脚本给出了一个例子。

于 2012-12-13T23:08:17.523 回答
8

为了在此处添加讨论set size ratio ...,您还可以设置绘图的纵横比。

以下是摘录help set size

ratio导致尝试在和gnuplot指定的绘图部分内创建纵横比为(y 轴长度与 x 轴长度之比)的图形。<xscale><yscale>

负值的含义是不同的。如果 =-1,gnuplot 会尝试设置比例,以使单位在 x 和 y 轴上具有相同的长度(例如,适用于地理数据)。如果 =-2,则 y 上的单位的长度是 x 上的单位的两倍,依此类推。

为此,您可能需要将输出驱动程序设置为合理的大小:

set term png size 800,400 #800 pixels by 400 pixels

或者:

set term post size 8,4 #8 inches by 4 inches

这完全取决于终端,因此查找终端的帮助以查看它使用的单位等是值得的。

于 2012-12-14T01:32:28.813 回答
0

设置 xrange[:]

设置 yrange[:]

使用这 2 个命令来定义图形的“大小”;)

于 2012-12-13T22:18:07.057 回答