1 gnuplot
有人可以帮助我.我正在尝试创建一个简单的图表.
set datafile separator ","
set xdata time
set timefmt "%d/%m/%Y %H:%M:%S"
set format x "%H:%M"
set autoscale y
plot ["13:00":"14:00"] './data.csv' using 1:2 with lines
Run Code Online (Sandbox Code Playgroud)
data.csv:
26/10/2010 13:30:01,1
26/10/2010 13:30:12,2
26/10/2010 13:30:23,3
26/10/2010 13:30:34,4
Run Code Online (Sandbox Code Playgroud)
给我错误:
line 6: all points y value undefined!
Run Code Online (Sandbox Code Playgroud)
我已经尝试过timefmt设置的所有方式!
非常感谢
问题是定义xrange,它需要是相同的格式timefmt(参见?time_axis)
以下适用于我
set datafile separator ","
set xdata time
set timefmt "%d/%m/%Y %H:%M:%S"
set format x "%H:%M"
set autoscale y
set xrange["26/10/2010 13:00:00":"26/10/2010 14:00:00"]
plot './data.csv' using 1:2 with lines
Run Code Online (Sandbox Code Playgroud)
哦,我摆脱了每行数据之间的空白行.
如果您不想编辑文件以删除空白数据,那么您可以在gnuplot中使用awk,如下所示,
plot "<awk '$0!~/^$/ {print $0}' ./data.csv" using 1:2 with lines
Run Code Online (Sandbox Code Playgroud)
为最后的命令.
编辑:进一步的信息,以防仍有问题(见评论)
我需要使用awk命令来绘制数据.这是为了删除数据中的空白行.以这种方式组合awk和gnuplot在linux系统上工作,我不确定windows上的gnuplot.可能是某些管道没有发生,在这种情况下,您必须在使用gnuplot之前删除空行.(你仍然可以使用awk,但也许不在plot命令中?)
如果您使用的是Linux,而上述功能不起作用,那么问题就出现了.也许在gnuplot会话中存储了旧命令?为了确保我们做的完全相同,我给出了我使用的shell脚本(我更改了xrange以更好地适应数据并制作更好的情节,同时注意到$ $而不是$,否则shell会误解$标志).
好的:我把文件data.csv.sh放在一个新文件夹中(如果你已经有data.csv或data.csv.png文件了):
#!/bin/bash
echo "26/10/2010 13:30:01,1
26/10/2010 13:30:12,2
26/10/2010 13:30:23,3
26/10/2010 13:30:34,4" > "data.csv"
gnuplot<<EOF
set term png small
set output "data.csv.png"
set datafile separator ","
set xdata time
set timefmt "%d/%m/%Y %H:%M:%S"
set format x "%H:%M"
set autoscale y
set xrange["26/10/2010 13:30:00":"26/10/2010 13:31:00"]
plot "<awk '\$0!~/^\$/ {print \$0}' ./data.csv" using 1:2 with lines
set output
set term pop
EOF
Run Code Online (Sandbox Code Playgroud)
然后在终端上输入:
chmod +wrx data.csv.sh && ./data.csv.sh
Run Code Online (Sandbox Code Playgroud)
使shell脚本可执行,然后运行它.
文件data.csv.png如下所示
祝一切顺利
汤姆
| 归档时间: |
|
| 查看次数: |
7704 次 |
| 最近记录: |