【问题标题】:how to use gnuplot to draw colored points如何使用gnuplot绘制彩色点
【发布时间】:2013-09-27 12:18:42
【问题描述】:

如何使用 gnuplot 绘制 孤立点(非连接点): x 轴必须是日期的第一列, y 轴是第二列 第三列必须是点的颜色(颜色定义为范围(例如:从 1 到 3 红色, 从4到6绿色...)

1999-01-19  21  0
2009-07-01  0   1
2008-08-20  2   1
2008-12-18  1   1
2004-05-12  4   1
2009-07-29  2   1
2008-08-07  0   1
2006-03-08  1   1
2004-08-31  9   2
2001-03-27  12  2
2009-08-19  0   2
2010-07-14  2   3
2009-06-24  4   3
2009-11-11  33  4
2010-10-13  5   4
2012-02-22  34  4
2011-05-11  2   5

【问题讨论】:

标签: date gnuplot


【解决方案1】:

有几种方法可以做到这一点:

您可以定义多个线型,然后使用linecolor variable,它允许您使用最后一列作为线型索引:

set timefmt '%Y-%m-%d'
set xdata time
set format x '%Y-%m'

set style increment user
set style line 1 lc rgb 'red'
set style line 2 lc rgb 'blue'
set style line 3 lc rgb 'green'
set style line 4 lc rgb 'magenta'
set style line 5 lc rgb 'yellow'

set style data points
plot 'data.txt' using 1:2:3 linecolor variable pt 7 ps 2 t ''

结果是:

这要求您定义与颜色一样多的线条样式。

或者,您可以定义相应的调色板并使用linecolor palette 对点进行着色:

set timefmt '%Y-%m-%d'
set xdata time
set format x '%Y-%m'

set cbrange [1:6]
set palette defined (1 'red', 3.5 'red', 3.5 'green', 6 'green')

set style data points
unset colorbox
plot 'data.txt' using 1:2:3 linecolor palette pt 7 ps 2 t ''

使用此选项时,您必须注意cbrange 和用于palette defined 的值匹配(此处为16),因为通常调色板的值已调整为匹配颜色范围。

上面的脚本给出了结果:

【讨论】:

  • 非常感谢,它对我帮助很大!但是如果我想根据第 3 列值自动分配颜色(忽略范围想法 plz)例如:值 1=> 红色值 2=> 蓝色值 3=> 绿色等等,我应该写什么!
  • @zoma.saf 这就是linecolor variable 所做的,我在答案的开头提到了这一点。我将此部分扩展为完整的脚本,请参阅编辑后的答案。
【解决方案2】:

一些解决方案可能是:

plot for [i=0:5] 'cp.txt' using ( i==$3 ? $1 : 1/0 ):2 notitle with points linestyle i

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    相关资源
    最近更新 更多