2015-01-14 2 views
1

Я пытаюсь использовать множитель для наложения кривой по контурной карте, и вот мой скрипт gnuplot.Используйте множитель для построения карты контура и кривой вместе

set term postscript enhanced color 'Times-Roman,24' 

set output 'cimax_pmf.eps' 
set encoding iso_8859_1 

set nokey 
set xlabel 'RC(\305)' 
set xrange [0:12] 
set yrange [0.2:1] 
set ylabel 'c^2_{imax}' 
set y2label 'PMF (kcal/mol)' 
set y2range [-20:1] 
set multiplot 
set pm3d map interpolate 10,10 
set view map 
set isosamples 10 #increase resolution 
set palette rgb 33,13,10 #rainbow color scheme 

unset colorbox 
splot[0:12][0.2:1] 'cisq_rrr_reduced.dat' u 1:2:3 notitle 
unset map 

plot[0:12] 'final_pmf.dat' u 1:2 w line lt 2 lw 2 notitle axis x1y2 
unset multiplot 

Одна вещь, чтобы отметить, что у меня есть две вертикальные оси Y, как это было предложено «оси X1Y2» в моем сценарии. Проблема в том, что после запуска этого скрипта я обнаружил, что второй график не соответствует правильному графику. Другими словами, они имеют разные размеры, и их перекрытие кажется проблематичным. Похоже, проблема, описанная на первом рисунке этой страницы http://lowrank.net/gnuplot/plot3-e.html#5.10

Но я не могу решить эту проблему, используя скрипт, похожий на эту страницу.

Спасибо.

ответ

1

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

  • Multiplot позволяет «установить размер» команды (см «помощь установленного размера» для получения дополнительной информации) для каждого графика. Но я думаю, если вы скажете, что сценарий на странице часто задаваемых вопросов не помог, этого, вероятно, недостаточно.
  • Возможно, было бы полезно установить поля (см. «Margin help margin»), которые могут использоваться для выравнивания более точных графиков в мультимножестве. Он также часто фиксирует проблему диапазонов данных различной длины, которые вызывают многочисленные проблемы несоосности.
+0

Спасибо. Я попытался «установить начало 0,0» и «установить размер 1,1» для обеих фигур, и это не сработало. Я также попытался дать обеим фигурам одинаковые левые, правые, нижние и верхние поля, но это не сработало. Знаете ли вы, есть ли лучший способ, чтобы я мог установить поля? – user2226358

+0

Не знаете, что «не работает». Тем не менее, вы можете увеличить маржу, чтобы убедиться, что они ограничивают оба графика. Иногда с небольшими значениями нет видимого эффекта. Как только вы выровняете два графика, вы можете уменьшить значения поля до тех пор, пока мультипликатор не станет как можно больше. –

+0

@ user2226358: Альтернативой является установка всех полей на 0, 'установить начало 0.2, 0.2' и' установить размер 0.79, 0.79' и отрегулировать эти значения, чтобы расположить график и тем самым отрегулировать поля. – Wrzlprmft

1

Я бы предложил не использовать pm3d и multiplot на всех, и вместо того, чтобы использовать plot … with image. Таким образом, вы можете сделать одну команду plot.

Если бы я не сделал ни одной ошибки, просто измените свой код (все, прежде чем multiplot неизменна):

[…] 
set y2range [-20:1] 
set palette rgb 33,13,10 #rainbow color scheme 

unset colorbox 
plot\ 
'cisq_rrr_reduced.dat' w image notitle,\ 
'final_pmf.dat' u 1:2 w line lt 2 lw 2 notitle axis x1y2 
+0

Спасибо, @Wrzlprmft. Я пробовал это, и этот путь не имеет проблемы выравнивания, описанной выше. Однако, поскольку точки данных в моем файле данных несколько распределены редко, я все же хочу использовать некоторую интерполяцию, такую ​​как ключевое слово «интерполировать» в pm3d, чтобы увеличить разрешение моей карты контура. Вы знаете, как я могу это сделать, когда я рисую изображение? Я попробовал «set isosample», и это не сработало. – user2226358

+0

Насколько я знаю, это невозможно. Если вы хотите, чтобы Gnuplot интерполировался, вы должны использовать 'pm3d'.Единственная альтернатива - написать небольшой скрипт, который генерирует интерполированный файл данных и отображает этот файл, как указано выше. – Wrzlprmft

+0

Также обратите внимание, что я никогда не буду интерполировать данные для таких графиков, поскольку это затуманивает фактическое разрешение данных. – Wrzlprmft

0

Вы можете использовать функцию GNUPLOT по сохранению данных контура в файл с помощью set table (обратитесь к документации, и довольно неявный пример here). Что-то вроде:

... 
set table 'contours.dat' 
splot[0:12][0.2:1] 'cisq_rrr_reduced.dat' u 1:2:3 notitle 
unset table 

plot[0:12] 'final_pmf.dat' u 1:2 w line lt 2 lw 2 notitle axis x1y2, \ 
      'contours.dat' using 1:2 

Отрегулируйте для вашего случая.

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