Вот как вы можете это достичь. Я покажу вам первый сценарий и результат, а затем объяснить шаги:
reset
set xtics nomirror
set x2tics
set autoscale xfix
set autoscale x2fix
set xlabel 'P'
set ylabel 'T'
set x2label 'V'
plot 'data.txt' using 3:2 with linespoints ps 2 lw 2 title 'T wrt P', \
'' using 3:2:x2tic(1) axes x2y1 with points ps 2 lw 2 title 'T wrt V'
Я первый участок T WRT P на x1y1
. После этого я сюжет T WRT V на x2y1
и использовать для этого диапазона и тик позиций P, но использовать значения V как крестики этикетки для оси х2. Это дает линейную шкалу для P и приспосабливает V соответственно.
Для этого необходимо использовать set autoscale xfix
и set autoscale x2fix
. Это использует точные диапазоны и не расширяет ось до следующих основных тиков, которые будут выполняться только для оси x, но не для оси x2, которая имеет пользовательские тики.
Можно, конечно, также обратный процесс и использовать линейную шкалу для V и адаптировать P тики. В любом случае для пользовательских тиков, которые размещаются с xtic()
или x2tic
, номера используются так же, как они отформатированы в файле данных.
reset
set xtics nomirror
set x2tics 1
set autoscale xfix
set autoscale x2fix
set xlabel 'P'
set ylabel 'T'
set x2label 'V'
plot 'data.txt' using 1:2:xtic(3) with linespoints ps 2 lw 2 title 'T wrt P', \
'' using 1:2 axes x2y1 with points ps 2 lw 2 title 'T wrt V'
Здесь точки показаны для обеих сюжетных линий, чтобы показать, что они действительно совпадают.
Для того, чтобы одна команда генерировала только xtics, можно использовать NaN
для y
-значения. И если только некоторые из пользовательских тиков должны быть ярлыками, нужна соответствующая проверка в вызове x2tic
. Здесь я поставил метки только для всех четных строк $0
является текущий номер строки, начиная с 0
):
reset
set xtics nomirror
set x2tics
set autoscale xfix
set autoscale x2fix
set xlabel 'P'
set ylabel 'T'
set x2label 'V'
plot 'data.txt' using 3:2 with linespoints ps 2 lw 2 title 'T wrt P', \
'' using 3:(NaN):x2tic((int($0) % 2) ? '' : stringcolumn(1)) axes x2y1 t ''
С результатом:
Спасибо Кристофа, это именно то, что я необходимо.У меня было ощущение, что это будет нечто простое, как добавление другой вещи в «использование 3: 2», но я не думал использовать x2tic. Я пробовал гораздо более сложные способы. У меня есть два других связанных вопроса, если у вас есть момент. Есть ли способ не отображать каждый символ на оси x2? Я пробовал основные «x2tics 2,2» и «x2tics (2, 4, 6)», но ни один из них не влияет на тиковые метки. Также можно добавить тики, но не точки (кроме того, чтобы заголовок для второго фрагмента был пустым и использовал тот же стиль для обоих графиков)? – falconskull
@falconskull Использование 'set x2tics ...' не работает, потому что у вас есть пользовательские метки. См. Последний пример в редактировании, как это сделать. – Christoph
Дорогой @ Кристоф действительно хороший ответ. Это то, что мне нужно с давних пор. Я попытался применить метод к моему сюжету, но я не могу сделать так хорошо, как хочу. Это мой результат: [link] (http://s1.postimg.org/qcm1kdvbj/Screenshot_from_2015_06_22_19_23_40.png) У меня есть два вопроса, если вы хотите мне помочь (извините, что разместите их здесь). Я пробовал условие для печати конкретных ярлыков, но для меня это недостаточно. Я могу указать ярлыки вручную? А другой - могу ли я указать, сколько x2tics я заработал? (в моем заговоре слишком много) Большое спасибо! – Nikko