r - ggplot2中的分轴图
问题描述
我刚刚在 Factfulness(汉斯·罗斯林和他的孩子们的书)中找到了这个情节。我发现分裂的美学很吸引人。
虽然使用 可以制作类似的东西geom_rect()
,但外观却完全不同。另一种方法是使用cowplot
或patchwork
相当棘手。这是我试图复制顶部的部分
gapminder %>%
filter(year==1997, gdpPercap<16000) %>%
ggplot(aes(gdpPercap, y=lifeExp, size=pop)) +
geom_point(alpha=0.5)+
scale_x_log10()+
ggthemes::theme_base()+
theme(legend.position = "none",
plot.background = element_blank(),
plot.margin = unit(c(0.5, 0, 0, 0), "cm")) -> P1
gapminder %>%
filter(year==1997, gdpPercap>16000) %>%
ggplot(aes(gdpPercap, y=lifeExp, size=pop)) +
geom_point(alpha=0.5)+
scale_x_log10()+
ggthemes::theme_base()+
theme(legend.position = "none",
axis.title.y = element_blank(),
axis.ticks.y = element_blank(),
axis.text.y = element_blank(),
plot.background = element_blank(),
plot.margin = unit(c(0.5, 0.5, 0, 0), "cm"),
axis.title.x = element_blank()) -> P2
cowplot::plot_grid(P1, P2, rel_widths = c(2,1), labels = NULL,
align = "h")
我认为所有其余的文本和亮点都可以使用现有的包。我想知道获得公共 x 轴的方法是什么(右侧应根据 显示刻度)。理想情况下,x 轴标题会居中,但这可能要求太多。我也可以将它作为文本移动到里面。
轴存在问题,正如您在带有 y 刻度的图中看到的那样。我想知道方面是否会是更好的方法。我也不确定点大小是否计算错误,因为我先过滤数据。
解决方案
这是使用方面的解决方案。scale
您可以通过使用包的 log10 中断计算器预先计算中断来解决 x 轴中断问题。您可以mutate()
在管道中使用 a 来创建一个拆分方面的新变量。
library(tidyverse)
library(gapminder)
breaks <- scales::log10_trans()$breaks(range(gapminder$gdpPercap), n = 6)
gapminder %>%
filter(year==1997) %>%
mutate(facet = factor(ifelse(gdpPercap > 16000, "High", "Low"),
levels = c("Low", "High"))) %>%
ggplot(aes(gdpPercap, y=lifeExp, size=pop)) +
geom_point(alpha=0.5)+
scale_x_log10(breaks = breaks)+
ggthemes::theme_base()+
facet_grid(~ facet,
scales = "free_x", space = "free_x") +
ggtitle("My title") +
theme(legend.position = "none",
plot.title = element_text(hjust = 0.5),
plot.background = element_blank())
推荐阅读
- python - 将 json 文件保存在 s3 存储桶中时出现错误 No such file
- python - 无法使用 Selenium Python 获取没有标签的文本
- python - 删除 \xa0 并仅修改数字
- django-filter - Django过滤器表单不显示
- lua - Discordia bot DM 发送破坏了我的脚本
- sql-server - 获取所有课程,一章中的一章 SQL Server
- windows - 如何在智能卡凭据提供程序中为域帐户序列化凭据以进行登录和解锁?
- python - 如何将 find_one() 函数与 _id 键一起使用?
- java - Spring HATEOAS RepresentationModel,无法设置属性链接,因为没有设置器,没有枯萎,它不是持久性构造函数的一部分
- python - 如何使用 python 保存和关闭 AutoCAD 应用程序?