Hi,
Here is a message about this showing an example to define a set of viewports and draw a colorbar along the right hand side of the page. ../fu_2000/msg00226.html
I searched the archive using "colorbar viewports" in the search
box. There may be other useful examples in the archive.
The idea can be generalized to other sets of viewports. The trick here is that the colorbar for a plot can be located anywhere on the page, even extending outside of the boundaries of the viewport being drawn.
I find that for PyFerret the size and location of the colorbar is
different from that in Ferret - the message above goes back to a
time when PyFerret didn't exist. So, the script would need to
define the x-limits of the colorbar differently, perhaps,
! ppl shakey 1 1 .12 1 3 9 `($ppl$xlen)+0.8+.5`
`($ppl$xlen)+0.8+.5+.5` 1.4 14.471
It's important to use the same set of color levels for all of the
viewports, so that the colors in the common colorbar applies to
all of panels. Also, by the way, what you have done with the plot
axis labels to remove the longitude and latitude labeling in the
interior of the plot, makes a nice clean plot
Here's an example, applying the suggested set of viewports to
data in one of the sample datasets (where I have not removed the
excess longitude/latitude labeling)
! Description: sets viewports for 2 columns
and 3 rows
! allow room for a big colorbar on the right
! this works well with the following shakey in the botr panel,
! and set win/asp=1.2 (else adjust the 2.25 in the final value)
! ppl shakey 1 1 .12 1 3 9 `($ppl$xlen)+0.8+.5`
`($ppl$xlen)+0.8+.5+.5` 1.4 14.471
set win/asp=1.2
cancel mode logo
define view/xlimits=0,.51/ylimits=0,.42
botl
define view/xlimits=0,.51/ylimits=.29,.71 midl
define view/xlimits=0,.51/ylimits=.58,1.0 topl
define view/xlimits=.45,.96/ylimits=0,.42 botr
define view/xlimits=.45,.96/ylimits=.29,.71 midr
define view/xlimits=.45,.96/ylimits=.58,1.0 topr
! Plot January winds for several years
use monthly_navy_winds
set view topl;
fill/L=1/nolab/nokey/lev=(-inf)(-12,12,1)(inf)/pal=centered_diff
uwnd; go fland
set view topr;
fill/L=12/nolab/nokey/lev=(-inf)(-12,12,1)(inf)/pal=centered_diff
uwnd; go fland
...
set view botr;
fill/L=72/nolab/nokey/lev=(-inf)(-12,12,1)(inf)/pal=centered_diff/set
uwnd
ppl shakey 1 1 .12 1 3 9 `($ppl$xlen)+0.9+.5`
`($ppl$xlen)+0.9+.5+.5` 1.4 14.471
ppl fill
go fland
If you want to draw a colorbar in a viewport, with only the
colorbar but no other elements of the plot showing up, you can
define a variable with no range in the region, and then use
qualifiers such as /nolabel/noaxes work to draw a plot that is
blank other than the colorbar. For instance, plot a variable with
values far out of the range of colors. A shakey setting could be
used here. I have used key=horizontal to draw the colorbar across
the top of the viewport.
yes? set view full
yes? let no_data = 0*missing(uwnd,0) + 1000 ! this variable is
1000 everywhere
yes?
fill/L=1/lev=(-20,20,2)/key=horizontal no_data
Dear ferreters,
I have 10 viewports of precipitation difference that all have similar but not the same levels (say levels=(-90,90,10) and levels=(-80,80,10)). It will be too noisy if I have 10 colorbars and I want the shading color to be the same for the same value (say red for -90 and blue for 90 no matter what my levels are). So I tried to plot only one shakey by setting view full after plotting all the subplots. Then I used ppl shakey and figured that Pyferret cannot find any shakeys because it already quit all the viewports. I am wondering if there is a way to create a shakey that works for all viewports (picking one viewport's shakey does not work for me because my levels are not all the same so the shakey will not be accurate, as attached).
Thank you in advance and stay healthy,
--
Xiaoyu