我试图从 BBC 复制这个数字。我很接近,但我正在努力使图例符号变薄。这可能吗?
library(tidyverse)
library("rio")
url <- "https://gist.githubusercontent.com/ericpgreen/a728be304b811fe7708699682eb4ba42/raw/fd924596e30c131dbaf97c00c9d9863bb40abb9a/bbcCovid.R"
df_plot <- rio::import(url)
ggplot(df_plot, aes(x=date,
y=reorder(Country.Region,
total,
order=TRUE))) +
geom_tile(aes(fill=casesRollf),
color="white",
na.rm = TRUE
#, key_glyph = draw_key_timeseries
) +
theme_bw() + theme_minimal() +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
legend.title = element_blank(),
plot.title.position = "plot") +
scale_x_date(breaks = as.Date(c("2020-02-14",
"2020-03-05",
"2020-03-25",
"2020-04-14")),
date_labels = "%d %b") +
scale_fill_manual(values=
c("#e4e4e4", "#ffeed2",
"#ffda64", "#faab19",
"#d2700d",
"#d56666", "#9a1200",
"#5b0600", "#000000"),
guide = guide_legend(reverse = TRUE),
labels=c("No cases", "1 to 10",
"11 to 50", "51 to 100",
"101 to 250", "251 to 500",
"501 to 1,000", "1,001 to 5,000",
"> 5,000")) +
labs(title = "Where are the most new coronavirus cases?",
subtitle = "New confirmed cases, three-day rolling average",
x="",
y="")
最佳答案
您可以使用 legend.key.width
在 theme
.为了更接近原始图,您可以使用 legend.position
和 plot.margin
如:
ggplot(df_plot, aes(x=date,
y=reorder(Country.Region,
total,
order=TRUE))) +
geom_tile(aes(fill=casesRollf),
color="white",
na.rm = TRUE
#, key_glyph = draw_key_timeseries
) +
theme_bw() + theme_minimal() +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
legend.title = element_blank()) +
scale_x_date(breaks = as.Date(c("2020-02-14",
"2020-03-05",
"2020-03-25",
"2020-04-14")),
date_labels = "%d %b") +
scale_fill_manual(values=
c("#e4e4e4", "#ffeed2",
"#ffda64", "#faab19",
"#d2700d",
"#d56666", "#9a1200",
"#5b0600", "#000000"),
guide = guide_legend(reverse = TRUE),
labels=c("No cases", "1 to 10",
"11 to 50", "51 to 100",
"101 to 250", "251 to 500",
"501 to 1,000", "1,001 to 5,000",
"> 5,000")) +
labs(title = "Where are the most new coronavirus cases?",
subtitle = "New confirmed cases, three-day rolling average",
x="",
y="")+
theme(plot.margin=unit(c(0.25,2,0.25,0.25),"cm"),
legend.position=c(1.03,0.72),
legend.key.width = unit(0.4,"line"))
顺便说一句:不错的作品;)
关于r - ggplot 使图例符号变细,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61260999/