我遇到了以下问题: 我有一个带有以下列的sqlite3数据库: ID,tempin,tempout,湿度,时间,日期
现在我想使用gnuplot将所有内容绘制成一个漂亮的情节。 我搜索了一下,发现了以下代码:
plot '< sqlite3 myfile.db3 "SELECT temp1, temp2, pressure, humidity FROM myTable;"' using 0:1 title 'temp1', \
'' using 0:2 title 'temp2'
但在编辑之后,gnuplot说“警告:跳过没有有效点的数据文件”
我的数据库看起来像:
ID tempin tempout humidity date time
1 24 12 55 01.11.2014 07:00
2 23 13 54 01.11.2014 07:15
3 25 13 45 01.11.2014 07:30
有没有人知道为什么我不能将数据库绘制成gnuplot? 此外,我想使用x scale的列日期或时间。
答案 0 :(得分:0)
您的代码有两个问题:
<img src="test">
作为数据列之间的分隔符,但是gnuplot默认需要空格为重现您的问题,我输入了sqlite3
|
然后尝试查询
create table myTable ( id int, tempin int, tempout int, humidity int, date date, time time );
insert into myTable values ( 1, 24, 12, 55, "01.11.2014", "07:00" );
insert into myTable values ( 2, 23, 13, 54, "01.11.2014", "07:15" );
insert into myTable values ( 3, 25, 13, 45, "01.11.2014", "07:30" );
得到
select temp1, temp2, pressure, humidity from myTable;
然后我尝试了
Error: no such column: temp1
得到
select * from myTable;
因此,我为您的数据库提供的gnuplot代码建议是
1|24|12|55|01.11.2014|07:00
2|23|13|54|01.11.2014|07:15
3|25|13|45|01.11.2014|07:30
答案 1 :(得分:-2)
直接在单词plot
后面,一个来源,例如需要一个文件名,而不是数据本身。但是,您可以使用特殊文件名&#34; - &#34;并且gnuplot会要求您手动输入表格。它看起来像这样:
gnuplot> plot "-" u 1:2 w l
input data ('e' ends) >
ID tempin tempout humidity date time
1 24 12 55 01.11.2014 07:00
2 23 13 54 01.11.2014 07:15
3 25 13 45 01.11.2014 07:30
input data ('e' ends) > e
现在,这取决于你调用gnuplot的方式。从命令行,您可以调用
gnuplot -e "plot '-' u 1:2 w l" < sqlite3 myfile.db3 ...
我自己不是将数据直接传递给gnuplot的朋友。我更喜欢将它写入文件,首先:
sqlite3 myfile.db3 ... > myDataFile
gnuplot -e "plot 'myDataFile' u 1:2 w l"
即便如此,我更喜欢编写一个包含gnuplot所有命令的gnuplot脚本。随着设置数量的增加,单个命令行变得更长且可读性更低。