我制作情节已经有一段时间了,它们在屏幕上的表现正是我喜欢的方式。这些数据来自与太阳能收集和存储相关的传感器。
在屏幕上绘制的它们看起来很棒,所以我进行了屏幕区域捕获来保存它们。
所以现在我想自动化保存过程。
这是我到目前为止所做的:
但是,通过使用 .PNG,图像看起来不一样。我真的认为 png 将是最好的选择,但事实证明,用于 X 轴(HH:MM 刻度)的字体太粗并且它们一起运行。它看起来像是我的情节设计的蜡笔绘制版本。
有人可以给我一些指导,告诉我如何最好地以编程方式生成保存图,使它们看起来像我设计的那样吗?
如果您没有将samples和 都设置isosamples为适当的值,则由 gnuplot 生成的等高线可能看起来非常奇怪(意外)。我花了几个小时努力找出如何准确地set samples影响set isosamples轮廓线的外观,但是,我观察到的只是将两者设置为足够大的值将生成漂亮的轮廓。不过,我想了解它到底是如何工作的。
set samples和之间有什么区别?set isosamplesset samples影响轮廓线的生成?set isosamples影响轮廓线的生成?例如,考虑以下简单情况:
unset surface
set contour
set cntrparam levels discrete 10, 20
set samples 250, 2
set isosamples 2, 250
set view map
splot x**2 + y**2
Run Code Online (Sandbox Code Playgroud)
要生成正确的轮廓线,您似乎需要将 的第一个参数samples和第二个参数设置isosamples为足够大的值。然而,将 的第二个参数samples和 的第一个参数设置isosamples为尽可能小的值并没有什么坏处。这并不完全直观。那么这是如何运作的呢?
我有一个 gnuplot 脚本,可以生成如下所示的条形图:
输入数据位于具有多列的文件中,每列最终构成图表中的一个簇(示例中显示了 2 个簇)。每个文件在图表中贡献一个条形(示例中有 9 个)。每个文件可能有大量行。
该脚本获取输入数据文件,并使用该stats命令生成包含原始文件每列一行的新文件。每行包含其源列的平均值、最小值和最大值。
然后使用这些新文件绘制带有误差线的条形图。每个文件代表一个条形图,每一行构成一个簇。剧情代码如下:
plot for [f in FILES] f.'.stats' using 2:3:4 title columnhead(1), \
'' using (0):xticlabels(1) with lines
Run Code Online (Sandbox Code Playgroud)
现在我有第二组文件,可以生成另一个类似的条形图。我想将这些图表组合成一个,这样就会有两行 3D 条形图,一排在另一排前面(用 3D 样式渲染 - 新的“z”轴代表两个数据集(两组)的FILES)。
这是一个示例来说明我所追求的外观(显然不是用 gnuplot 制作的!):
我可以用 Gunplot 做到这一点吗?
我已经阅读了用户手册和《Gnuplot In Action》一书,但没有发现任何表明这是可能的。
.dat我在与需要绘制的文件相同的文件夹中生成一个 Gnuplot 脚本,即使从不同的目录调用它,我也希望它能够工作。不幸的是,相对路径似乎是在调用 Gnuplot 的目录中工作的,而不是在脚本文件所在的目录中工作的。例如:
gnuplot folder/script.gp
Run Code Online (Sandbox Code Playgroud)
如果文件是folder/data.dat并且脚本说将会失败plot "data.dat"。有什么办法可以解决这个问题吗?就像 Gnuplot 中保存当前执行脚本的位置的变量一样?
我想使用 Gnuplot 脚本绘制多个文件。
然而,我在使其完美方面遇到了一些麻烦。
但是,线点图同时接触 x 轴和 y 轴。
因此,我想在xrangeand上添加额外的空间yrange并得到
它不会触及我的轴。
我可以使用set xrange和手动进行操作set yrange。
然而,我需要绘制 100 多个不同的文件,这样做会非常耗时。
有某种方式可以自动增加某些单位的xrange大小吗?yrange
我的 Gnuplot 代码如下。
#!/usr/bin/env gnuplot
set terminal epslatex size 7.5,3 standalone
set output 'pareto.tex'
set style fill solid 0.8
set ytics nomirror
set xtics nomirror
set grid lc rgb "#F2F2F2"
set xlabel 'Z_1'
set ylabel 'Z_2'
set xrange [170:215]
set yrange [7:40]
set style line 1 lt rgb "#000000" lw …Run Code Online (Sandbox Code Playgroud) 我想在 xlabel 下的 x 轴下放置一个颜色框。我的意思是它应该从 0 开始,到 22 结束。
set colorbox horiz user origin .1,.02 size .8,.04
Run Code Online (Sandbox Code Playgroud)
谢谢
我尝试创建多图 (2x2) 和单图的组合。我不确定我做错了什么,但我不知道该怎么做。我的尝试:
plot sin(x) title "this should be a single plot"
set multiplot layout 2,2 title "Those are the multiplots"
set title "A!"
plot sin(x)
set title "B!"
plot cos(x) not
set title "C!"
tan(x) title "tan"
set title "D"
tan(0.5*x) not
Run Code Online (Sandbox Code Playgroud)
不管我把情节放在后面还是前面,但我无法想象它。
谢谢。
我有多个像这样的 CSV 文件(只有一列):
3
4
2.3
0.1
Run Code Online (Sandbox Code Playgroud)
现在我想创建一个包含<filename>:<sum of the column>.
但目前我很难总结一个专栏:
plot 'data1.txt' using 0:(sum [col = 0:MAXCOL] (col)) with linespoint;
Run Code Online (Sandbox Code Playgroud) 在注意到https://lwn.net/Articles/723818/上的交互式 gnuplot 图形在鼠标悬停时显示国家/地区名称后,我想知道如何简单地显示图中点的值。
例如,我想将鼠标悬停在https://s.natalian.org/2020-08-24/mouse-hover.svg中的“daughter bar”上并清楚地看到60。
然而现在它只显示坐标 IIUC。我该如何解决?
set term svg mouse standalone
reset
$heights << EOD
dad 181
mom 170
son 100
daughter 60
EOD
unset key
set boxwidth 0.5
set style fill solid
set yrange [0:*]
plot '$heights' using 2:xtic(1) with boxes
set output '/tmp/mouse-hover.svg'
replot
Run Code Online (Sandbox Code Playgroud) 我使用 gnuplot 来显示数据,并且通常在 vim 中编辑文件。如果可能的话,我希望有某种语法突出显示。我尝试使用 gnuplot 的 vim 插件安装几个插件,但似乎无法使其工作。这是我的文件的内容.vimrc:
call plug#begin()
Plug 'tpope/vim-sensible'
Plug 'flazz/vim-colorschemes'
Plug 'junegunn/seoul256.vim'
Plug 'junegunn/vim-easy-align'
Plug 'vim-scripts/gnuplot.vim'
call plug#end()
if has("syntax")
syntax on
endif
let mapleader=","
set cindent
set statusline+=col:\ %c,
set ruler
set nu
set showcmd
set nocompatible
set nosol
set background=dark
set autoread
set wildmenu
set lazyredraw
set magic
set showmatch
set mat=10
set noerrorbells
set novisualbell
set autoindent
set smartindent
set cursorline
set ic
set hls
set lbr
set shiftwidth=4
set …Run Code Online (Sandbox Code Playgroud)