У меня вопрос о pm3d и gnuplot. Я хочу построить две разные поверхности с двумя разными типами pm3d. Как я могу это сделать? Является ли это возможным? Я попытался использовать мультиплекс, но в этом случае поверхности будут перекрываться, и я не могу повернуть график. Любая помощь будет оценена, спасибо!Gnuplot, pm3d и поверхности
ответ
Вот пример с данными псевдо:
reset
set xrange[0:1]
set yrange[0:1]
set cbrange[0:1]
set palette defined (0 'green', 1 'red', 1 'blue', 2 'white')
set isosamples 100
set samples 100
set pm3d depthorder
set view 60,335
splot '++' using 1:2:2:(0.5*$2) with pm3d title 'red -> green',\
'++' using 1:2:1:(0.5*(1+$1)) with pm3d title 'blue -> white'
Результат:
Чтобы использовать данные вместо этих данных псевдо сгенерированные «++» вы можете использовать stats
для определения диапазонов данных и масштабируйте цвета поверхности соответственно [0:0.5]
для одного, и до [0.5:1]
для другого.
Эта концепция с различными цветовыми диапазонами для включения двух палитр в одном работает только для файлов данных (включая файлы псевдоданных). Для того, чтобы построить две сферы под друг друга с разными цветами, можно сначала создать файл данных, который затем используется для pm3d
черчения:
reset
# generate the sphere data
set samples 100
set isosamples 100
set parametric
set urange[0:2*pi]
set vrange[0:pi]
set table 'spheres.dat'
r = 0.25
splot r*cos(u)*sin(v),r*sin(u)*sin(v),r*cos(v) with lines
unset table
unset parametric
# plot the generated data set
set xrange[-1:1]
set yrange[-1:1]
set cbrange[-1:3]
set palette defined (0 'black', 1 'green', 1 'black', 2 'red')
set pm3d depthorder
unset colorbox
unset key
set ticslevel 0
set view 19,34
splot 'spheres.dat' using ($1-0.5):2:3:($3/r) with pm3d, \
'' using ($1+0.5):2:3:($3/r + 2) with pm3d
Результат является
Спасибо. В моем случае я должен построить две поверхности, но с более чем одним значением z. Например, я хочу построить две сферы в плоскости xy, и я хочу назначить красный цвет одному, а зеленый - другому. –
Я хочу построить сферы с функциями, а не с файлом данных –
@PaoloUsai Ну, у меня также есть несколько значений 'z'. Вы должны немного прочитать в руководстве о специальном имени файла '++' и инструкции 'using'. И если сферы будут полностью красными или затененными, например. от красного до белого? – Christoph
Единственный способ, которым я могу думать, использовать четыре столбца для 'splot', в этом случае четвертый столбец представляет собой отдельное серое значение, отображенное палитрой. Затем вам нужно создать единую палитру, содержащую одну палитру в одной половине, а другую палитру в другой половине, а затем сопоставить две поверхности, чтобы использовать только соответствующую половину палитры. Это возможно, но требует некоторых возиться :-) – Christoph