颜色 x 轴或线取决于 y 值
Color x-axis or line depending on y-value
我有这样的数据:
0.0 23.5 1
0.1 12.2 1
0.2 15.0 3
0.3 34.4 4
0.4 37.1 4
第 3 列表示第 2 列的数据所属的类别。我想将第 2 列与第 1 列绘制为默认线图,并通过 x 轴的颜色(或图中某处与 x 轴平行的线)表示第 3 列中的类别。
总共有18个类别,我想将类别编码如下
1 ... 6 种红色
7 ... 12 种绿色
13 ... 18 种蓝色阴影
这是如何实现的?
可以使用 linecolor variable
或 linecolor palette z
结合预定义的调色板轻松地从第三列读取颜色信息。我不确定你想要 blue/green/red 的阴影,但一种可能的方法是从全色变为白色:
set palette defined (1 'red', 6.9 'white', 7 'green', 12.9 'white', 13 'blue', 18.9 'white')
set cbrange [1:19]
边界有意设置为 0.9,因此没有一点是真正的白色,但始终具有其原始颜色的色调。
您提供的数据只有 1 到 4,所以我创建了一些随机数据来覆盖整个颜色范围:
set samples 20
set table $DATA
plot '+' u 1:(rand(0)*30):(round(rand(0)*18)) w table
unset table
将线图与颜色信息相结合的一种方法是向线图中添加彩色点:
plot $DATA u 1:2 w l lc "black", '' u 1:2:3 w p pt 5 ps 5 lc pal z
据我所知,您需要一个折线图和一些带有某种颜色的水平线,具体取决于第 3 列中的值。
那么,为什么不绘制条形图呢?检查下面的示例,它可以适应您的特殊需要。
代码:
### apply shades of colors from a column
reset session
# create some test data
set print $Data
do for [i=1:18] {
print sprintf("%g %g %g", i/10., rand(0)*10+10, i)
}
set print
set palette defined ( 0 "#aa0000", 1 "#ee0000", 1.99 "#ffaaaa", \
2 "#00aa00", 3 "#00ee00", 3.99 "#aaffaa", \
4 "#0000aa", 5 "#0000ee", 5.99 "#aaaaff" ) maxcolors 18
set style fill solid 1.0
set boxwidth 0.8 relative
set xtics out
set yrange[0:30]
set cbrange[1:18]
set cbtics ()
do for [i=1:18] {
set cbtics add (sprintf("%g",i) i/18.*17+0.5)
}
set key noautotitle
plot $Data u 1:2:3 w boxes lc palette
### end of code
结果:
代码:(或者,底部有颜色条的折线图)
### apply shades of colors from a column
reset session
# create some test data
set print $Data
do for [i=1:18] {
print sprintf("%g %g %g", i/10., rand(0)*10+10, i)
}
set print
set palette defined ( 0 "#aa0000", 1 "#ee0000", 1.99 "#ffaaaa", \
2 "#00aa00", 3 "#00ee00", 3.99 "#aaffaa", \
4 "#0000aa", 5 "#0000ee", 5.99 "#aaaaff" ) maxcolors 18
set style fill solid 1.0
set boxwidth 0.8 relative
set xtics out
set yrange[0:30]
set grid x,y
set cbrange[1:18]
set cbtics ()
do for [i=1:18] {
set cbtics add (sprintf("%g",i) i/18.*17+0.5)
}
set key noautotitle
plot $Data u 1:2 w lp pt 7 lc "black", \
'' u 1:(0.5):3 w boxes lc palette
### end of code
结果:
我有这样的数据:
0.0 23.5 1
0.1 12.2 1
0.2 15.0 3
0.3 34.4 4
0.4 37.1 4
第 3 列表示第 2 列的数据所属的类别。我想将第 2 列与第 1 列绘制为默认线图,并通过 x 轴的颜色(或图中某处与 x 轴平行的线)表示第 3 列中的类别。
总共有18个类别,我想将类别编码如下 1 ... 6 种红色 7 ... 12 种绿色 13 ... 18 种蓝色阴影
这是如何实现的?
可以使用 linecolor variable
或 linecolor palette z
结合预定义的调色板轻松地从第三列读取颜色信息。我不确定你想要 blue/green/red 的阴影,但一种可能的方法是从全色变为白色:
set palette defined (1 'red', 6.9 'white', 7 'green', 12.9 'white', 13 'blue', 18.9 'white')
set cbrange [1:19]
边界有意设置为 0.9,因此没有一点是真正的白色,但始终具有其原始颜色的色调。
您提供的数据只有 1 到 4,所以我创建了一些随机数据来覆盖整个颜色范围:
set samples 20
set table $DATA
plot '+' u 1:(rand(0)*30):(round(rand(0)*18)) w table
unset table
将线图与颜色信息相结合的一种方法是向线图中添加彩色点:
plot $DATA u 1:2 w l lc "black", '' u 1:2:3 w p pt 5 ps 5 lc pal z
据我所知,您需要一个折线图和一些带有某种颜色的水平线,具体取决于第 3 列中的值。 那么,为什么不绘制条形图呢?检查下面的示例,它可以适应您的特殊需要。
代码:
### apply shades of colors from a column
reset session
# create some test data
set print $Data
do for [i=1:18] {
print sprintf("%g %g %g", i/10., rand(0)*10+10, i)
}
set print
set palette defined ( 0 "#aa0000", 1 "#ee0000", 1.99 "#ffaaaa", \
2 "#00aa00", 3 "#00ee00", 3.99 "#aaffaa", \
4 "#0000aa", 5 "#0000ee", 5.99 "#aaaaff" ) maxcolors 18
set style fill solid 1.0
set boxwidth 0.8 relative
set xtics out
set yrange[0:30]
set cbrange[1:18]
set cbtics ()
do for [i=1:18] {
set cbtics add (sprintf("%g",i) i/18.*17+0.5)
}
set key noautotitle
plot $Data u 1:2:3 w boxes lc palette
### end of code
结果:
代码:(或者,底部有颜色条的折线图)
### apply shades of colors from a column
reset session
# create some test data
set print $Data
do for [i=1:18] {
print sprintf("%g %g %g", i/10., rand(0)*10+10, i)
}
set print
set palette defined ( 0 "#aa0000", 1 "#ee0000", 1.99 "#ffaaaa", \
2 "#00aa00", 3 "#00ee00", 3.99 "#aaffaa", \
4 "#0000aa", 5 "#0000ee", 5.99 "#aaaaff" ) maxcolors 18
set style fill solid 1.0
set boxwidth 0.8 relative
set xtics out
set yrange[0:30]
set grid x,y
set cbrange[1:18]
set cbtics ()
do for [i=1:18] {
set cbtics add (sprintf("%g",i) i/18.*17+0.5)
}
set key noautotitle
plot $Data u 1:2 w lp pt 7 lc "black", \
'' u 1:(0.5):3 w boxes lc palette
### end of code
结果: