маркировка значений в спектральных пиках XRD - PullRequest
0 голосов
/ 12 июня 2019

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

График Gnuplot XRD, точки соединения

чтобы получить что-то вроде этого:! (http://publications.iodp.org/proceedings/324/203/images/03_F04.jpg)

Edition 1

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

Мой код выглядит следующим образом:

set terminal postscript enhanced color"Times-Roman" 20
set xlabel "2{/Symbol Q} (°)"
set ylabel "Intensity (a.u.)"
set xrange [10:90]
set key off
set decimalsign
set output "UHTC-XRD.eps"
set palette defined (1 "red", 2 "green", 3 "blue")
unset colorbox
array Materials[3] = ["ZrB_2", "SiC", "C"]
Gap = 150
Length = 500
plot  "XRD_UHTC_data.txt" using 2:1 with lines lc rgb "blue" title "lines", "peaksUHTC.txt" for [i=1:3] '' u (i==$3?$2:NaN):($1+Gap+Length+Gap):3 w p pt 7 palette title Materials[i]

Для следующих данных спектра (я укажу только несколько строк, + 4000):

147 10.01
181 10.03
169 10.05
148 10.07
162 10.09
165 10.11
167 10.13

и Iполучить этот рисунок: enter image description here

Первый вопрос, как я могу удалить значения оси Y? По поводу маркировки пиков, я сделал следующий файл в качестве примера

# PosY PeakX  Category
10697 41.77 1
6383 32.73 1
259 35.81 2
101 16.27 3

но у меня есть эта ошибка в основном файле:

"gnuXRD_UHTC.txt" строка 26: неожиданный или нераспознанный токен

, и я могуне вижу, что не так.

1 Ответ

1 голос
/ 12 июня 2019

Одно предложение (требуется gnuplot> = 5.2): вам необходимо иметь файл данных / блок данных, который содержит положения пиков, интенсивности пиков, а также класс материала (например, в виде числа). Поскольку у меня нет XRD-данных, я просто строю пики с импульсами (замените эту строку вашими XRD-данными). Затем используйте with vectors для короткой линии над пиками и with points для символа. Одним из способов является использование палитры для получения цветов в зависимости от класса материала. Чтобы получить правильную окраску легенды, вам нужно пропустить определенные кривые при циклическом просмотре материалов (выражение: ...(i==$3?$1:NaN)...) Возможно, есть другие (более простые?) Способы достижения того же результата.

Код:

### labeling of peaks
reset session

$PeakData <<EOD
# PosX PeakY  Category
9.56   998.8  2
11.2  1215.9  3
26.9  1315.0  1
34.6  4927.5  1
36.6  1023.1  1
42.1  1262.3  1
46.0  1609.7  4
50.5  1404.1  1
55.4  1393.8  1
55.5  1686.6  2
56.9  1545.7  3
66.4   581.4  1
67.8   722.5  3
72.0   679.6  2
72.9   571.2  3
74.9   419.5  3
76.9   582.4  4
78.3   484.9  1
EOD

Gap = 150
Length = 500
set palette defined (1 "red", 2 "green", 3 "blue", 4 "orange")
unset colorbox
array Materials[4] = ["Material 1", "Material 2", "Material 3", "Material 4"]

plot $PeakData u 1:2 with impulses lw 2 lc rgb "violet" notitle, \
     $PeakData u 1:($2+Gap):(0):(Length) with vectors nohead notitle, \
     for [i=1:4] '' u (i==$3?$1:NaN):($2+Gap+Length+Gap):3 w p pt 7 palette title Materials[i]
### end of code

Результат:

enter image description here

...