2015-12-28 3 views
2

Я хотел бы построить CSV-данные и передать их с двумя осями x. На нижней линейной шкале (4 * $ 1^2), а сверху - логарифмической шкале в других единицах ($ 1). Обе шкалы должны относиться к одному и тому же сюжету.Двойная шкала для CSV-данных в gnuplot

plot "sum_no_realloc.csv" using ($1*$1*4):4 with lines, 

Таким образом, нижняя шкала должна быть в 4 * $ 1^2 единицах, а верхняя часть должна быть в единицах 1 долл. США.

ответ

2

Используйте команду связи.

Предположим, что файл данных выглядит следующим образом:

3 1 
4 2 
10 3 
20 4 

и вы хотите построить, как вы описали. Ось x2 должна показать координаты x, а оси x1 должны отображать преобразованные координаты.

Issue следующие команды:

set link x2 via sqrt(x/4.0) inverse 4.0*x*x 
set x2tics 

Тогда если участок по

plot "datafile.txt" using ($1*$1*4.0):2 with lines 

Вы увидите, что ось х2 проходит от 0 до 20, а ось x1 проходит от 0 до 1600 (4 * 20 * 20). Команда ссылки заставляет две оси привязываться на основе функции отображения. Вам нужно указать, как ось x2 определяется по оси x1, и как идти в другую сторону. Gnuplot обычно выдает предупреждающее сообщение, когда вы делаете это, чтобы не подтвердить соответствие.

На следующем рисунке показаны результаты (я обозначил оси с помощью обычного набора xlab и задал команды x2lab).

Log and linear scale

+0

набор ссылка не доступна на 4.6 версии GNUPLOT-x11, так что я должен был очистить его, сделать и установить новейший пакет 5.0. Теперь он работает очень хорошо. Спасибо. – Nabuchodonozor

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