2015-05-26 5 views
2

У меня есть этот график в Gnuplot:Могу ли я иметь несколько цветов на ярлыке gnuplot?

enter image description here

Я хочу включить итоги для каждого из трех цветных линейных графиков. Одна из возможностей заключается в замене ключа с этим:

enter image description here

Могу ли я сюжет это с одной меткой, которая переключает цвета? Если нет, тогда мне придется использовать шесть ярлыков. В этом случае, как определить координаты меток, учитывая, что ширина строк может меняться? Я мог бы использовать шрифт с фиксированной шириной и делать некоторые вычисления на основе количества цифр в каждом из итогов, но это кажется утомительным.

Есть ли более умный способ указать итоги на графике?

ответ

2

Вы не можете изменить цвет текста внутри одной метки, вы должны использовать шесть разных меток. Тем не менее, есть несколько способов, чтобы упростить это:

  • Используйте 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 
    

enter image description here

что до сих пор не является полностью автоматическое решение, но сводится к выбору подходящих значений только для anchor и dy.

+0

Хорошее решение. Спасибо! – Sol

3

Вы можете использовать расширенный текстовый режим для наложения по-разному цветные метки:

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} заменяется пустым пространством с шириной текста «КОСМОС».

В Г.П. версии < 5 Вам необходимо включить расширенный текстовый режим первого, это по умолчанию, так как 5.0

обновление: set xtics работает в принципе аналогична, но вы не можете установить две метки на ту же позицию, они сменяют друг другой, и опция 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" 
Смежные вопросы