我可以在 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
这仍然不是一个全自动的解决方案,但归结为只为 anchor
和 dy
选择合适的值。
您可以使用增强文本模式套印不同颜色的标签:
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"
我在 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
这仍然不是一个全自动的解决方案,但归结为只为 anchor
和 dy
选择合适的值。
您可以使用增强文本模式套印不同颜色的标签:
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".
在 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"