Text 如何使用诸如“0”之类的线条绘制数据&书信电报;文本>&书信电报;日期时间>&引用;,用gnuplot?

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 我想使用点、钻石或颜色与第

“我的数据”是典型的类似CSV的文本,其中每行由两列组成,第一列是文本,第二列是unix时间戳,如下所示:

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 ''