Hey everyone,
Can PyGMT draw the colorbar like the picture below, and the annotation contains the units.
Hello wensentry,
yes, it is possible to add the unit to the single values of the colorbar annotation:
import pygmt
size = 5
fig = pygmt.Figure()
fig.basemap(
region=[-size, size, -size, size],
projection="X" + str(size*2) + "c",
frame=True,
)
# Append +u with the desired unit to the argument for the x axis
# and pass it to the frame parameter
fig.colorbar(cmap="batlow", frame="x+uK")
fig.show()
Output figure:
Hello @yvonnefroehlich Thank you so much for your help. It works.
import pygmt
fig = pygmt.Figure()
lowest = -15
highest = 15
interval = (highest - lowest) / 64
pygmt.config(FONT_TITLE="18p,5", FONT_LABEL="16p,4", FONT_ANNOT_PRIMARY="10p,4", MAP_TITLE_OFFSET="-12p", MAP_FRAME_TYPE="plain")
pygmt.makecpt(cmap="Purple_Orange.cpt", series=[lowest, highest, interval])
fig.grdimage(grid=r'276_chazhi_TWSDSTF.tif', frame=["lbtr"], cmap=True)
fig.colorbar(cmap=True, position="JMR+w5c/0.5c", frame=["x+uK"])
fig.show()
Output figure :
I have one more question. How to set the colorbar annotation to show only the minimum,0 and maximum values with unit? The final result I would like to get is shown below.
Data and CPT file :
https://drive.google.com/drive/folders/1HUMTtj4c6DlcBkco_YHayPPyL6mV_E1D?usp=sharing
In your case, you can achieve this by specify the step of the annotation:
fig.colorbar(cmap=True, position="JMR+w5c/0.5c", frame=["xa15+uK"])