2016-04-30 2 views
1

Я программирования график с осями (у «%» и х «дата») и когда менее 7 записей не показали хорошоОшибка с графикой GNUPLOT

Эти файлы

данных. CSV:

20-04-2016 96.8 95.8 100 
21-04-2016 97.07 97.99 100 
22-04-2016 98.05 99.5 100 
23-04-2016 98.64 97.88 100 
24-04-2016 98.96 98.99 100 
25-04-2016 98.68 98.11 100 

граф

reset 

set terminal png size 1200,500 

#set xlabel "Time (days)" 
set xdata time 
set timefmt "%d-%m-%Y" 


set ylabel "Total Petitions (%)" 
set yrange [95:100] 

set title "Akamai" 
set key reverse Left outside 
set grid 

set style data linespoints 

plot "datos.csv" using 1:2 title "One (%)", \ 
"" using 1:3 title "Two (%)", \ 
"" using 1:4 title "Ideal (%)" 

Он показывает мне этот

enter image description here

Как показано на рисунке, даты повторяются, и я хочу, чтобы появилось одно число за запись.

Я также хотел бы перенести дату

%d-%m\n%Y 

Это решается, если я ставлю 7 или больше записей

И это произойдет, если я ставлю полную дату, но описание оси х

enter image description here

Возможно ли установить дату по вертикали?

Большое спасибо за вашу помощь

ответ

1

использования set format x;

set terminal pngcairo enhanced color dashed \ 
rounded size 1200,500 

set title "Akamai" 
set xlabel "date" 
set xdata time 
set timefmt "%d-%m-%Y" 
set format x "%d/%m\n%Y" 
set xtics 86400 
set nomxtics 
set ylabel "Total Petitions (%)" 
set yrange [95:100] 
set style data linespoints 
set grid 
set key right bottom 
set output 'user1847844.png' 

plot "datos.csv" using 1:2 title "One (%)", \ 
"" using 1:3 title "Two (%)", \ 
"" using 1:4 title "Ideal (%)" 

Внутри gnuplot преобразует DateTimes до нескольких секунд. Таким образом, строка set xtics 86400 в основном говорит, чтобы сделать один тик в день, так как один день имеет 24 * 60 * 60 = 86400 секунд. set nomxtics сообщает gnuplot, чтобы не показывать мелкие отметки на оси x.

Это дает: corrected PNG image

Если вы хотите повернуть метку, используйте:

set format x "%d/%m/%Y" 
set xtics rotate 86400 

Это должно форматировать даты, как в одной строке и повернуть метки на 90 градусов.

Update:

Обратите внимание, что я использую pngcairo терминал. Это основано на cairo graphics library. Это предназначено для обеспечения согласованного вывода на всех выходных носителях. Но gnuplot должен быть скомпилирован с поддержкой cairo для этого.

В целом, я предпочитаю терминал pdfcairo. Это создает PDF-файл, который можно масштабировать без эффекта пикселизации.

Update 2:

Чтобы получить последовательность в моих графиках, я определил некоторые стили в моем gnuplotrc, которые я использую в моих графиках. Содержимое моего gnuplotrc показано ниже.

set encoding utf8 

# See https://github.com/Gnuplotting/gnuplot-palettes 
# Line styles (colorbrewer Set1) 
set style line 1 lc rgb '#E41A1C' pt 1 ps 1 lt 1 lw 2 # red 
set style line 2 lc rgb '#377EB8' pt 6 ps 1 lt 1 lw 2 # blue 
set style line 3 lc rgb '#4DAF4A' pt 2 ps 1 lt 1 lw 2 # green 
set style line 4 lc rgb '#984EA3' pt 3 ps 1 lt 1 lw 2 # purple 
set style line 5 lc rgb '#FF7F00' pt 4 ps 1 lt 1 lw 2 # orange 
set style line 6 lc rgb '#FFFF33' pt 5 ps 1 lt 1 lw 2 # yellow 
set style line 7 lc rgb '#A65628' pt 7 ps 1 lt 1 lw 2 # brown 
set style line 8 lc rgb '#F781BF' pt 8 ps 1 lt 1 lw 2 # pink 
# Palette 
set palette maxcolors 8 
set palette defined (0 '#E41A1C', 1 '#377EB8', 2 '#4DAF4A', 3 '#984EA3',\ 
4 '#FF7F00', 5 '#FFFF33', 6 '#A65628', 7 '#F781BF') 

# Standard border 
set style line 11 lc rgb '#808080' lt 1 lw 3 
set border 0 back ls 11 
set tics out nomirror 

# Standard grid 
set style line 12 lc rgb '#808080' lt 0 lw 1 
set grid back ls 12 
unset grid 

В качестве стандарта я использую терминал pdfcairo, например.

set terminal pdfcairo enhanced color dashed font "Alegreya, 14" \ 
rounded size 16 cm, 9.6 cm 

Используемый шрифт является примером. Для графиков в отчетах я обычно использую тот же шрифт, что и основной текст.

Команда plot использует определенные стили.

plot "user1847844.d" using 1:2 ls 1 title "One (%)", \ 
"" using 1:3 ls 2 title "Two (%)", \ 
"" using 1:4 ls 3 title "Ideal (%)" 

Это производит фигуру, похожую на это. graph with my settings


Примечание: Поскольку StackOverflow не принимает PDF изображения, я преобразовал его в PNG с помощью ImageMagick.

convert -density 300 <input.pdf> -quality 100 -sharpen 0x1.0 <output.png>