Gnuplot, CSV, только отдельные ярлыки? - PullRequest
1 голос
/ 27 января 2012

Мне нужна помощь по обработке файла CSV с помощью gnuplot. Мой CSV-файл выглядит так:

a,1002
b,612
b,893
b,361
b,932
b,483
b,899
b,614
c,722
d,1038
d,1580

Я хочу использовать 2-й столбец для значения Y, номер строки в качестве значения X. Это легко сделать.

Мне удалось поместить первый столбец как ярлык xtics, но после нескольких часов работы Google я не нашел решения, позволяющего gnuplot печатать ярлык только один раз (моя ось x была переполнена ярлыками, что делало ее нечитаемой ).

Мне нужно что-то вроде:

.
.     b
.a ***** c
.**    ***       d  ****
.        ************
........................

Но я получаю это:

    .
    .  
    .  *****
    .**     ***          ****
    .        ************
    ........................
   sdflksdjflksdjflksdjflkadjflksjdflkasj

Надписи на оси или на графике тоже будут нормальными, это не имеет значения.

Ответы [ 2 ]

2 голосов
/ 27 января 2012

Чтобы установить xtics, которые не являются периодическими, используйте

set xtics ("a" 1, "b" 2, "c" 9, "d" 10)

Вы можете извлечь информацию из ваших данных простым скриптом, например,

cut -f1 -d, data | while read name ; do
    let line++
    if [[ $name != $oldname ]] ; then
        oldname=$name
        echo "'$name'" $line
    fi
done
1 голос
/ 27 января 2012

Некоторые дополнительные предложения:

set pointsize 2.5
set xtics ("a" 1, "b" 5, "c" 9, "d" 10.5)
set xrange [0:12]
plot "< cat -n aa.csv | sed -e 's/,/  /g'" using 1:3 pt 7 notitle

дает неравномерно расположенные метки вместо x-тиков (как это было предложено @choroba, который также предоставил способ автоматизации определения среднего интервала для больших наборов данных). (Здесь aa.csv содержит данные, как показано в вашем вопросе.)

enter image description here

Если вы хотите, чтобы надписи появлялись в области печати, а не под осью X, вы можете начать с

set format x ""

, а затем поместите ваши метки выше максимального значения, найденного в любой из вышеперечисленных категорий, a, ..., d.

...