2015-07-02 7 views
1

я следующие данные в cr.datGnuplot - изменение масштаба оси

0.03 0.0227352 
0.02 0.0276084 
0.01 0.0386684 
0.009 0.0407197 
0.008 0.0431688 
0.007 0.04612 
0.006 0.0497781 
0.005 0.0545085 
0.004 0.0608376 
0.003 0.069918 
0.002 0.0844434 

И следующий сюжет сценария

set xtics (0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 0.009, 0.01, 0.02, 0.03) 
plot "cr.dat" u 1:2 title "cr"; 

Который производит этот образ plot cr

Можно ли удалить большие промежутки между 0,01, 0,02 и 0,03?

Я надеялся, что команда set xtics будет равномерно распределять данные tics вдоль оси x. Но это не так.

Update

Я попытался в Irregular gnuplot x-values предложенное решение с xticlabels, но это производит странные оси х и у.

Новый сюжет сценарий

set xtics (0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 0.009, 0.01, 0.02, 0.03) 
plot "cr.dat" u xticlabels(1):2 title "cr"; 

конец результат plot cr2

ли я что-то неправильно?

+0

В основном 'xtics' делает то, что вы просите у него: отображение тиков в данной позиции. Является нерегулярным масштабом, что вы хотите? –

+0

Я бы сказал, да. Я хочу равномерно распределенные тики вдоль оси х. – tiom

+0

Ваш вопрос является возможным дублированием [Нерегулярные значения gnuplot x] (http://stackoverflow.com/questions/13507565/irregular-gnuplot-x-values) –

ответ

1

Чтобы равномерно разнесенных xtics, вы должны дать равномерно космические рентгеновские значения. Каждому из этих значений х может быть присвоен пользовательский ярлык, взятый из файла данных, с помощью функции xticlabel. Обратите внимание, что эта функция всегда должна быть последней, которую вы укажете в операторе using.

Для получения равномерного пространства x-значений используйте номер строки, который содержится в псевдоколоне 0. Таким образом, для того, чтобы получить желаемый участок, использовать

plot 'cr.dat' using 0:2:xticlabel(1) title "cr" 

, который использует номер строки в й-значении, значение из второго столбца в виде гаммы-значения и значения в первом столбце в качестве xtic этикетки.

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

  1. сортировки файлов данных.
  2. Сортировка файлов данных на лету (отлично работает с помощью Unix инструмент командной строки sort:

    plot '< sort cr.dat' using 0:2:xticlabel(1) 
    
  3. Используйте отрицательное значение числа строк, которые эффективно дает вам обратную ось х:

    plot 'cr.dat' using (-$0):2:xticlabel(1) 
    

результат последней команды является

enter image description here

+0

Спасибо за подробный ответ. Я не знал, что вам нужно сортировать входные данные gnuplot. Я всегда предполагал, что gnuplot просто заговорит их от начала до конца. Человек никогда не перестает учиться. – tiom

+0

Gnuplot отображает данные в соответствии с заданным значением x, но в вашем случае порядок значений x меняется на противоположный по сравнению с номером строки. – Christoph

0

Использование

set logscale x 

преобразовать linear ось х в logarithm оси х, которые нормализуют пробелы в некоторой степени.

В качестве альтернативы, изменить размер участка, чтобы получить больше места

set term . . . size 1920, 1080 
+0

Извините, что забыли упомянуть об этом, но я попробовал logscale allready. Сюжет на самом деле не равномерно разнесенный см. Здесь [http://s29.postimg.org/mhw86oblj/test.png) – tiom

+0

@tiom Добавленный размер участка альтернативный – Shreevardhan

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