Странный диагональный сюжет с gnuplot сюжет с изображениями - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь отобразить 3 переменных, где третий столбец определяет цветовую палитру. Код вызывается другой программой. Файл данных имеет разбросанные точки данных, разделенные «:» (двоеточием).

Используемый файл сценария:

reset
set title "Cluster Properties"
set datafile separator ":"
outfile = sprintf("%s%s", ARG2, "ClusterCount2.png")
set output  outfile
set term pngcairo size 1920, 1080 enhanced font 'Verdana,30'
x_tk = sprintf("%s%s%s", "Sweeps ( X ", ARG6, " )")
set xtics 1,1
set ytics 1,1 font ", 20"
set ytics add (2)
set xlabel x_tk
set ylabel "Cluster Size (Particles)"
set zlabel "Number of Clusters"
set cblabel "Number of Clusters"
set cbtics 0,1 font ", 20"
set autoscale xfix
set yrange [1:*]
set view map

set y2tics 1,1

set grid front xtics y2tics lw 1.5 lt -1 lc rgb 'white'


unset key
plot ARG1 using ($1/ARG6):2:3 with image

reset

Дает следующий результат:

Проблема c График :

Problematic Plot

То же самое с меньшим количеством точек данных:

Хорошо График :

Okay Plot

Ссылка на файл данных: Диск Ссылка на файл данных

Может ли кто-нибудь мне с этим помочь, я не знаю что не так?

1 Ответ

0 голосов
/ 30 мая 2020

Ваш файл данных не содержит строки для каждого пикселя в подразумеваемом изображении. То есть есть 11 точек со значением x 50000, 25 со значением x 100000, 39 со значением x 150000, ... Когда программа пытается вычислить количество горизонтальных и вертикальных пикселей в изображении, она видит 11 точек с одинаковым x координирует и думает Ага! одно из размеров изображения - 11. Но затем, прочитав весь файл данных, он знает, что всего 738 пикселей, и пытается сделать его прямоугольником 11xSomething. Это, очевидно, не работает, и в результате на каждой вертикальной линии отображается 11 пикселей, но они смещаются, чтобы заполнить весь диапазон видимых координат.

Короче говоря, ваш файл данных фактически не описывает полный прямоугольник angular массив пикселей, который может быть отображен как изображение. Вы можете изменить процедуру, используемую для создания файла, так, чтобы весь прямоугольник был заполнен, или построить with points pt 5, а не with image.

Вот результат

gnuplot> set pointsize 4
gnuplot> plot 'clusterstat.dat' using ($1/5.e5):2:3 with point pt 5 lc palette

Очевидно, вы захотите дополнительно настроить размер точки, соотношение осей, размещение меток и т. Д. c, но это показывает, что есть в данных. enter image description here

...