Как задать тип точки из данных в 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
). В основном у вас есть два варианта:
Переберите все возможные типы точек (которые вы можете извлечь с помощью
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
Использовать
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