Как задать тип точки из данных в gnuplot?

Как задать тип точки из данных в gnuplot?

скрипт gnuplot:

set terminal pngcairo size 640,480
set output "points.png" 
set style data points 
set auto x 
set autoscale x 
unset colorbox 
plot 'test.data' using 2:1 with points notitle

test.data

32  35  8
34  34  6
36  28  1
34  32  2
28  30  7
38  30  9
34  29  2
35  36  9
39  34  3
31  33  9
28  31  6
35  30  5
33  41  4
32  37  3

Как получить тип точки из 3 столбца?

plot 'gnuplot.data' using 2:1 with points pt (:3) notitle // error 

пример абстракции:

необходимость:

gnuplot версия 4.6, уровень обновления 4

1 ответ

Решение

Нет возможности выбрать тип точки из файла данных на основе столбца (эквивалентно linecolor variable, pointsize variable или же arrowstyle variable). В основном у вас есть два варианта:

  1. Переберите все возможные типы точек (которые вы можете извлечь с помощью stats если это должно быть переменным) и для каждого числа наносите только те точки, которые соответствуют текущему типу точек:

    stats 'test.data' using 3 nooutput
    unset key
    set style data points
    plot for [i=STATS_min:STATS_max] 'test.data' using 2:($3 == i ? $1 : 1/0) lt 1 pt i ps 2
    

  1. Использовать labels стиль построения графика и последовательность символов точки Unicode, из которых вы выбираете, используя значение из третьего столбца в качестве индекса. (используйте, например, http://www.shapecatcher.com/ или http://decodeunicode.org/en/geometric_shapes чтобы найти подходящие символы)

    unset key
    set encoding utf8
    symbol(z) = "•✷+△♠□♣♥♦"[int(z):int(z)]
    plot 'test.data' using 2:1:(symbol($3)) with labels textcolor lt 1
    

Другие вопросы по тегам