Text 如何使用诸如“0”之类的线条绘制数据&书信电报;文本>&书信电报;日期时间>&引用;,用gnuplot?
“我的数据”是典型的类似CSV的文本,其中每行由两列组成,第一列是文本,第二列是unix时间戳,如下所示:Text 如何使用诸如“0”之类的线条绘制数据&书信电报;文本>&书信电报;日期时间>&引用;,用gnuplot?,text,time,gnuplot,Text,Time,Gnuplot,“我的数据”是典型的类似CSV的文本,其中每行由两列组成,第一列是文本,第二列是unix时间戳,如下所示: Mom 1441008169 Dad 1442516527 Ken 1441783871 ... <text> <unix-timestamp> 当我告诉它: set ydata time set timefmt "%s" plot "-" <data> EOF 设置ydata时间 设置时间表“%s” 情节“-” EOF 我想使用点、钻石或颜色与第
Mom 1441008169
Dad 1442516527
Ken 1441783871
...
<text> <unix-timestamp>
当我告诉它:
set ydata time
set timefmt "%s"
plot "-"
<data>
EOF
设置ydata时间
设置时间表“%s”
情节“-”
EOF
我想使用点、钻石或颜色与第一列中的文本字符串对应的形状来渲染绘图。换句话说,如果我的文本值在集合{“Mom”、“Dad”、“Ken”}内,那么gnuplot应该在对应于x轴上各自时间戳的点上绘制这些形状,这些形状对应于红色的“Mom”、绿色的“Dad”和蓝色的“Ken”等等
我面临的挑战是让gnuplot区分文本字符串。例如,数据可以被认为是来自某人的传入呼叫,其中时间戳指示呼叫的日期和时间,文本表示呼叫的人。我认为将这些数据表示为沿时间线绘制的点/球体/钻石/任何不同颜色的东西都是一个好主意
我将如何实现这一点?我可以选择生成某种标识符表,其中唯一的文本字符串每个都等同于一个唯一的顺序生成的ID,如果这有助于gnuplot的话。我猜您想要的是这样的 x轴跨越数据文件指定的时间间隔(第2列)。每个名字(肯、妈妈、爸爸)都由不同的点类型(
pt
)和特定颜色(lc-rgb'color'
)表示
可以通过以下命令生成此绘图(假设数据文件名为“test”):
通过为pt
指定不同的编号,可以使用不同的点类型<代码>ps指定点大小
我提出的另一个表述如下:
您可以通过以下方式生成它:
plot 'test' u ($2):(1):(stringcolumn(1)) with labels t '',\
'' u ($2):(0.95) with impulses t ''
我希望这能回答您的问题,这正是您想要的。在gnuplot中花费了很多时间,不想过度劝阻您,您是否致力于该方案?你会在一些更现代、更广泛的东西中发现更多的灵活性,比如pyplot。我喜欢
gnuplot
,因为它可以通过将数据管道化到标准输入中来轻松编写脚本。在这一点上,我没有考虑其他任何事情,但是如果gnuplot不能胜任这项任务,我当然不得不这么做。关于这个错误,请看这真的很棒,谢谢!第一个情节本来是我想要的,但是它的源代码很复杂,而且考虑到我必须事先将名字(Ken
等)映射到数字,我想我可能会选择第二个情节。两者似乎都是可视化数据的好方法。
set xdata time
set timefmt "%s"
set format x "%d/%m/%y"
set xtics rotate
unset ytics
set yrange[0:2]
plot 'test' u ($2):(stringcolumn(1) eq "Ken" ? 1 :1/0) w p pt 5 ps 1.5 lc rgb 'blue' t 'Ken',\
'' u ($2):(stringcolumn(1) eq "Dad" ? 1 :1/0) w p pt 7 ps 1.5 lc rgb 'red' t 'Dad',\
'' u ($2):(stringcolumn(1) eq "Mom" ? 1 :1/0) w p pt 3 ps 1.5 lc rgb 'green' t 'Mom'
plot 'test' u ($2):(1):(stringcolumn(1)) with labels t '',\
'' u ($2):(0.95) with impulses t ''