Closed PanfengZhang closed 1 year ago
The wind speed magnitude in the legend retains a lot of numbers after the decimal point.
As shown in the following figure, the wind speed in the legend is 26.81044 m/s. This is not very necessary. I just want to show as 27m/s.
rm(list = ls()) library(sf) library(rnaturalearth) library(stars) library(metR) library(ggplot2) library(units) wld <- ne_coastline(returnclass = "sf") # u wind: https://downloads.psl.noaa.gov/Datasets/ncep.reanalysis.dailyavgs/pressure/uwnd.2022.nc # v wind: https://downloads.psl.noaa.gov/Datasets/ncep.reanalysis.dailyavgs/pressure/vwnd.2022.nc diriu <- "C:/documents/rdata/dataset/uwnd.2022.nc" diriv <- "C:/documents/rdata/dataset/vwnd.2022.nc" du <- read_ncdf(diriu, var = "uwnd") |> units::drop_units() dv <- read_ncdf(diriv, var = "vwnd") |> units::drop_units() u <- du[,,,3, 118] |> as.data.frame() v <- dv[,,,3, 118] |> as.data.frame() ds <- merge(u, v, sort = FALSE) ds[ds$lon > 180, "lon"] <- ds[ds$lon > 180, "lon"] - 360 # 0°-360°转为-180~180° sf_use_s2(FALSE) ggplot() + geom_sf(data = wld, colour = "blue", size = 0.3) + coord_sf(crs = 4326, expand = FALSE) + geom_vector(data = ds, aes(x = lon, y = lat, dx = uwnd, dy = vwnd), arrow.type = "open", size = 0.3, skip = 4) + scale_mag(name = NULL, max_size = 1, guide = guide_vector(title = "m/s", title.position = "right")) + scale_x_continuous(breaks = seq(-135, 135, 45)) + scale_y_continuous(breaks = seq(-45, 45, 45)) + ggtitle(paste(ds$time[1], "global wind vector at the 850hPa")) + theme_bw() + theme(legend.position = c(0.83, 1.08), axis.title = element_blank())
Is there any way to solve it?
I know a method, as shown below.
scale_mag(name = "27m/s")
But this method is only suitable for drawing a single wind vector map, and it is not applicable when drawing in batches.
scale_mag(..., label = scales::number_format()) should work. Perhaps I should use some kind of "smart" algorithm to select a "nice" number, though.
scale_mag(..., label = scales::number_format())
Thanks. It solved my issue.
The wind speed magnitude in the legend retains a lot of numbers after the decimal point.
As shown in the following figure, the wind speed in the legend is 26.81044 m/s. This is not very necessary. I just want to show as 27m/s.
Is there any way to solve it?
I know a method, as shown below.
But this method is only suitable for drawing a single wind vector map, and it is not applicable when drawing in batches.