Ось X в верхней части графика на графике GNU - PullRequest
0 голосов
/ 25 мая 2019

Я могу поместить ось X в верхнюю часть графика на графике GNU через

set x2label "label" и set x2tics

У меня есть столбец данных со значениями data1, и я хотел бы построить эти значения, умноженные на два на верхней оси x, против данных data2 на нижней оси x. И data1, и data2 находятся в одном файле данных. Вот некоторые примеры данных

data2     data1
20        1.2e-2
40        3.0e-3
60        1.4e-3
...          ...

Я бы хотел построить 2 * data1 на верхней оси против data2 на нижней оси. Предпочтительно, я бы хотел просто поставить галочку на оси 2 * data1 для каждого значения data2. На оси Y я нанесу некоторую другую величину против данных 2, но все, о чем я хочу спросить здесь, это как построить график x2 против x1.

Спасибо!

1 Ответ

0 голосов
/ 25 мая 2019

до сих пор догадываюсь, что именно вы хотите. Может быть, мы узнаем быстрее с этим примером.

reset session

$Data <<EOD
# x2  x1      y
20    1.2e-2  1
40    3.0e-3  2
60    1.4e-3  3
EOD

set key top center
set xtics nomirror
set x2tics nomirror

plot $Data u ($1*2):3 axes x2y1 w lp pt 7 title "y-data vs. x2-axis", \
      '' u 2:3 axes x1y1 w lp pt 7 title "y-data vs. x1-axis"

Результат:

enter image description here

Edit:

Вы можете связать оси x1 и x2 с помощью функции (в приведенном ниже примере преобразования между нм и эВ), а затем установить желаемое значение x2tics.

  1. График1: соответствующие «нечетные» значения из x1,
  2. График 2: «четные» значения по заданному интервалу x2tics 0.2,
  3. График3: ручная настройка x2tics.

Пример: * * тысяча тридцать-один

### linked axes x1, x2
reset session

set xlabel "Wavelength / nm"
set xtics nomirror
set x2label "Energy / eV"
set x2tics nomirror
set link x via 1239.8/x inverse 1239.8/x

set ylabel "Intensity / a.u."
set ytics 0.2
set samples 400
Spectrum(x) = exp(-(x-500)**2/(400))

set xrange[380:780]

set multiplot layout 3,1
    set format x2 "%.2f"
    plot Spectrum(x) w l title "Spectrum"

    set format x2 "%.1f"
    set x2tics 0.2
    replot

    set x2tics ()
    myTics = "1.7 1.8 1.9 2.0 2.1 2.3 2.5 2.7 3.0"
    do for [i=1:words(myTics)] { set x2tics add (word(myTics,i) real(word(myTics,i))) }
    replot

unset multiplot
### end of code

Результат:

enter image description here

...