r - 多图校正
问题描述
从下面的数据和代码中,我尝试制作多图,但问题是塑料消费与塑料生产重叠,我希望两者相互聚集而不重叠。
structure(list(Country = c("China", "Indonesia", "Vietnam", "Thailand",
"Egypt", "India", "Turkey", "Brazil", "United States", "Russia"
),
Plastic.Consumption = c(44.14201935, 12.87658986, 23.6336878,
52.92058216, 13.93164324, 6.994354455, 64.77526757, 31.53076177,
87.30070657, 32.01972449),
Plastic.Production.Kt. = c(42421L,
2258L, 387L, 5881L, 411L, 7211L, 939L, 5860L, 33985L, 3487L),
Plastic.Waste.Mismanagemet..kt. = c(8819.716784, 3216.855605,
1833.819141, 1027.739178, 967.0123574, 599.8191155, 485.937142,
471.4039969, 275.4244968, 80.75948103)), class = "data.frame", row.names = c(NA, -10L))
data=read.csv("PPPP.csv")
library(ggplot2)
library(tidyr)
library(dplyr)
ggplot(data) +
geom_col(aes(x = Country, y = Plastic.Production.Kt.), size = 1, color = "black", fill = "blue") +
geom_col(aes(x = Country, y = 400*Plastic.Consumption), size = 1, color="black", fill = "red") +
scale_y_continuous(sec.axis = sec_axis(~./400, name = "Plastic Consumption"))+
geom_line(aes(x = Country, y = Plastic.Waste.Mismanagemet..kt.), size = 2, color="black", group = 1)
解决方案
你需要躲避酒吧。目前,您只是在绘制另一个。因为您对 有两个不同的调用geom_col
,所以您只是在另一个之上绘制一个。您需要重新调整数据,以便在单个列中同时包含塑料消耗量和生产量,并使用不同的列标记每个值,以确定它是指生产量还是消费量。这称为长格式。一旦你有了这个,你可以将填充颜色映射到生产或消费。这不仅可以让您躲避横条,还可以创建一个图例。这个情节真的需要一个传说,因为目前你无法知道哪种颜色是生产,哪种颜色是消费。
出于同样的原因,您应该将线条映射到颜色美学,以便它出现在图例中。否则,没有指示该行的含义。
data %>%
mutate(Plastic.Consumption = 400 * Plastic.Consumption) %>%
pivot_longer(2:3) %>%
ggplot() +
geom_col(aes(x = Country, y = value, fill = name),
size = 1, color = "black", position = "dodge") +
geom_line(aes(x = Country, y = Plastic.Waste.Mismanagemet..kt.,
color = "Mismanagement"),
size = 2, group = 1) +
scale_color_manual(values = "black", name = "") +
scale_y_continuous(name = "Plastic Production (Kt)",
sec.axis = sec_axis(~./400, name = "Plastic Consumption")) +
scale_fill_manual(values = c("red", "blue"), name = "")
推荐阅读
- postgresql - 如何在 pgAdmin 中运行真实的程序并评估结果
- php - nginx服务器上的验证码,暴力攻击
- php - 如何解决laravel中Database Seeder的问题
- python - 无法使用扩展 AppiumLibrary 的自定义机器人框架库单击元素
- azure-media-services - Azure 媒体播放器如何获取播放器的源 url
- python - 从 .csv 文件中的某个位置提取值
- python - 检查字符串中的字符是否包含在列表的任何单词中
- sql - BigQuery 中特定日期之间的 SUM 值
- java - 使用 MappedByteBuffer 进行快速非阻塞读/写?
- ruby-on-rails - 如何在 Rails 中使用 Grape 包含关系