我可以在 gnuplot 标签中使用多种颜色吗?

Can I have multiple colors in a gnuplot label?

我在 gnuplot 中有这张图:

我想包括三个彩色折线图的总计。一种可能是用这个替换密钥:

我可以用一个可以切换颜色的标签来绘制它吗?如果不是,那么我将不得不使用六个标签。在那种情况下,鉴于字符串的宽度可以变化,我如何确定标签的坐标?我可以使用固定宽度的字体并根据每个总数中的位数进行一些计算,但这看起来很乏味。

有没有更聪明的方法来表示图表中的总数?

您不能更改单个标签内的文本颜色,您必须使用六个不同的标签。然而,有一些方法可以简化这个:

  • 对彩色标签在x方向使用left和负数offset,对数字使用right和正数offset , 喜欢

    set label 1 right at graph 0.5, char 1 "FY2013" tc lt 1 offset char -0.5,0
    set label 2 left at graph 0.5, char 1 "34,674" offset char 0.5,0
    
  • 使用set macros并定义一个字符串变量anchor="graph 0.5, char 1"用于设置所有标签的锚点。

    set macros
    anchor="graph 0.5, char 1"
    set label 1 at @anchor "FY2013" tc lt 1 offset char -0.5,0
    
  • 围绕单个锚点移动所有标签,并使用两个变量参数化该点的偏移量:

    set macros
    anchor="graph 0.5, char 1"
    ofs_x = 0.5
    dx = 20
    set label 1 right at @anchor "FY2013" tc lt 1 offset char -dx - ofs_x,0
    set label 2 left at @anchor "34,674" offset char -dx + ofs_x,0
    set label 3 right at @anchor "FY2014" tc lt 2 offset char -ofs_x,0
    set label 4 left at @anchor "16,240" offset char ofs_x,0
    set label 5 right at @anchor "FY2015" tc lt 3 offset char dx - ofs_x,0
    set label 6 left at @anchor "6,863" offset char dx + ofs_x,0
    
    set bmargin 3.5
    plot -x
    

这仍然不是一个全自动的解决方案,但归结为只为 anchordy 选择合适的值。

您可以使用增强文本模式套印不同颜色的标签:

set label 1 at 0,0 textcol rgb "red" "ONE"
set label 2 at 0,0 textcol rgb "blue" "&{ONE}TWO"
set label 3 at 0,0 textcol rgb "green" "&{ONETWO}THREE"

&{SPACE} 中括号内的任何文本都将替换为文本宽度为 "SPACE".

的空 space

在 gp 版本 <5 中,您需要先启用增强文本模式,自 5.0 起默认为该模式

update: set xtics 原理类似,但不能将两个label设置在同一个位置,它们相互替换,textcolor选项对整个坐标轴有效。所以这不起作用:

set xtics left ("ONE"  1) textcol rgb "red"
set xtics add ("&{ONE}TWO"  1.00001) textcol rgb "blue"
set xtics add ("&{ONETWO}THREE"  1.00002) textcol rgb "green"