Gnuplot 5: цветовой градиент затенения между кривыми - PullRequest
2 голосов
/ 10 февраля 2020

Это было создано с Matplotlib. Можно ли сделать такой же тип штриховки в Gnuplot 5?

color gradient shading

1 Ответ

2 голосов
/ 11 февраля 2020

Я не знаю, что у gnuplot есть опция градиентной заливки, но я могу ошибаться. Ниже приведен немного «уродливый» обходной путь. Вы в основном создаете 3 участка друг над другом. Возможно, вы захотите настроить палитру, чтобы получить желаемые цвета и плавный переход.

  1. фиктивный график, чтобы получить палитру в качестве фона (т. Е. Поле цвета размером с график)
  2. покрыть часть выше оси y>f(x) и y>0 до x2, а также ниже оси y<f(x) и y<0 до x1.
  3. построить еще раз f(x), чтобы увидеть f(x) и снова ось тиков

Редактировать: В более ранней версии кода использовался multiplot. Это не обязательно, просто используйте set colorbox back. Но тогда set xzeroaxis ls -1 больше не отображается, вместо этого добавьте plot 0 w l ls -1.

Код:

### filled curve with gradient
reset session

f(x) = sin(x)/(1+x)
fabove(x) = f(x)<0 ? 0 : f(x)
fbelow(x) = f(x)>0 ? 0 : f(x)

set samples 200
set palette defined (0 "white", 1 "red", 2 "black")

set colorbox back user origin graph 0, graph 0 size graph 1, graph 1
unset cbtics

set xrange[0:15]
set xzeroaxis ls -1
set yrange[-0.2:0.5]

plot fabove(x) w filledcurves x2 fc rgb "white" not, \
     fbelow(x) w filledcurves x1 fc rgb "white" not, \
     f(x) w l lw 2 lc rgb "black", \
     NaN palette, \
     0 w l ls -1
### end of code

Результат:

enter image description here

...