2016-01-05 5 views
3

с двух дней я пытаюсь решить эту проблему. Полоски этой сложной гистограммы не печатаются друг над другом. Они свободно плавают вокруг.GnuPlot: сложная гистограмма вызывает зависание баров

Во-вторых, я хочу только напечатать любую 5-ю этикетку. Я использую GNUPLOT V 4,6 6. hovering bars in stacked bargraph номера патчей

Вот первые строки данных (генерируется с LibreOffice):

05.06,-,-,1 
06.06,3,-,0 
07.06,12,-,3 
08.06,0,5,4 
09.06,7,2,0 
10.06,86,2,1 
11.06,31,4,1 
12.06,17,1,0 
01.07,1,7,1 

Здесь идет набор команд:

gnuplot> set datafile separator ',' 
gnuplot> set style data histogram 
gnuplot> set style histogram rowstacked 
gnuplot> set style fill solid border -1 
gnuplot> set xlabel "Zeit" 
gnuplot> set ylabel "Anzahl" 
gnuplot> set yrange [0:250] 
gnuplot> plot 'test.csv' using 2:xtic(1) title "Menge A",'' 
gnuplot> using 3:xtic(1) title "Menge B",'' 
gnuplot> using 4:xtic(1) title "Menge C" 

ответ

1

Gnuplot, кажется, чтобы получить путают с - как только содержимое столбца. Также set datafile missing '-' не помогает. Вам нужен файл данных с действительно пустыми полями, как

05.06,,,1 
06.06,3,,0 
07.06,12,,3 

Если вы не можете получить LibreOffice, чтобы сохранить файл данных правильно, вы можете использовать, например, sed для обработки файла на лету:

plot "< sed 's/-//g' test.csv" using 2:xtic(1), '' ... 

(Это работает должным образом, если вы не имеете отрицательные значения, что я полагаю, это так).

Ко второй части: Вместо xtic(1) вы также можете поместить любое выражение, которое приводится к строке внутри xtic, как

xtic(int($0)%5 == 0 ? strcol(1) : '') 

Это использует строку в первой колонке, как xticlabel, если номер строки является кратна 5, в противном случае пустая строка:

set datafile separator ',' 
set style data histogram 
set style histogram rowstacked 
set style fill solid border -1 
set xlabel "Zeit" 
set ylabel "Anzahl" 
set yrange [0:*] 
plot '< sed "s/-//g" test.csv' using 2:xtic(int($0)%5 == 1 ? strcol(1) : '') title "Menge A",\ 
    '' using 3 title "Menge B",\ 
    '' using 4 title "Menge C" 

enter image description here

+0

Спасибо, что за правильные ответы - просто установка файла данных отсутствует - для меня тоже не сработало. Я удалил любые тире из файла данных, и все прошло хорошо. –

1

Как Chris тоф уже объяснил, проблема вызвана - в ваших входных данных.
Таким образом, лучшим и самым чистым решением является то, что LibreOffice отображает недостающие данные по-разному.

Однако все было хорошо для меня, когда я маскирую using COLUMNNUMBER на using $COLUMNNUMBER. Таким образом, я изменил последнюю строку кода в

plot 'test.csv' u ($2):xtic(1) t "Menge A", '' u ($3) t "Menge B", \ 
    '' u ($4) t "Menge C" 

Как вы видите, вы можете сократить using к u и title к t. Более того, вы должны использовать :xtic(1) только для первого набора данных.
Вот мой выход enter image description here

Смежные вопросы