gpt4 book ai didi

r - ggplot 在多面图上有一些错误。尝试使用多面 ggplot 协调 y 值

转载 作者:行者123 更新时间:2023-12-04 10:24:11 28 4
gpt4 key购买 nike

所以我试图在一个多面的 ggplot 上编辑 y 值,因为我在编织时在情节上有几个不准确之处。我对 R 和 R Markdown 很陌生,所以我不太明白为什么,例如,美国的 GDP PPP 在美元金额最高时比其他值低。其他值也存在一些差异,当这些值只有大约 100 美元到 500 美元的差异时,条形看起来要高得多。有谁知道可能是什么问题?这是我的代码:

library(ggplot2)
library(tidyr)

OECD_IMF <- read.csv("OECD_IMF.csv")
attach(OECD_IMF)
detach(OECD_IMF)

OECD_IMFlong <- gather(OECD_IMF, key="measure", value="value", c("GDP_Nom_T" , "GDP_PPP" ,"Aid_Perc"))

variable_names <- list("GDP_Nom_T" = "GDP Per Capita 2018 (USD Thousands)" ,
"GDP_PPP" = "GDP Purchasing Power Parity 2018 (USD Trillions)",
"Aid_Perc" = "Average % of Gross National Income Given in Foreign Aid (2000-2016)")

variable_labeller <- function(variable,value){
return(variable_names[value])}

ggplot(OECD_IMFlong, aes(x=Country, y=value, fill=Country))+
geom_bar(stat='identity')+ geom_text(aes(label=value), vjust=1.6, color="white", size=2.1)+
facet_wrap(~measure, scales="free_y", ncol=1, labeller= variable_labeller)+
labs(caption="Source: Official Development Assistance Database & IMF World Economic Outlook")+ ylab("Value")+
theme_grey() + theme(axis.text.x = element_text(angle = 45, hjust = 1),axis.title.y=element_blank(),axis.title.x=element_blank())

ggplot

最佳答案

正如@StupidWolf 已经指出的那样,问题在于您的 value column 是一个字符而不是一个数字向量。所以你必须转换value绘图前的数字。为了获得正确的值和标签,我添加了一个新的 var value1这是给 geom_bar 的数字而 value保留为一个字符,并提供给 geom_text 以用漂亮的 $-labels 标记条形。尝试这个

library(ggplot2)
library(stringr)
library(dplyr)

OECD_IMFlong <- structure(list(Country = structure(c(7L, 2L, 5L, 1L, 6L, 3L, 4L, 7L, 2L, 5L, 1L, 6L, 3L, 4L, 7L, 2L, 5L, 1L, 6L, 3L, 4L), .Label = c("Canada", "France", "Germany", "Italy", "Japan", "UK", "USA"), class = "factor"), GDP_Nom = c(6.7063e-05, 4.4062e-05, 4.345e-05, 4.845e-05, 4.3118e-05, 4.9617e-05, 3.4575e-05, 6.7063e-05, 4.4062e-05, 4.345e-05, 4.845e-05, 4.3118e-05, 4.9617e-05, 3.4575e-05, 6.7063e-05, 4.4062e-05, 4.345e-05, 4.845e-05, 4.3118e-05, 4.9617e-05, 3.4575e-05), measure = c("GDP_Nom_T", "GDP_Nom_T", "GDP_Nom_T", "GDP_Nom_T", "GDP_Nom_T", "GDP_Nom_T", "GDP_Nom_T", "GDP_PPP", "GDP_PPP", "GDP_PPP", "GDP_PPP", "GDP_PPP", "GDP_PPP", "GDP_PPP", "Aid_Perc", "Aid_Perc", "Aid_Perc", "Aid_Perc", "Aid_Perc", "Aid_Perc", "Aid_Perc"), value = c("$67,063.00", "$44,062.00", "$43,450.00", "$48,553.00", "$43,118.00", "$49,617.00", "$34,575.00", "$20.54", "$2.78", "$4.97", "$1.71", "$2.86", "$3.95", "$2.08", "0.1717", "0.0467", "0.2108", "0.2843", "0.4963", "0.374", "0.1869")), row.names = c(NA, -21L), class = "data.frame")


variable_names <- list("GDP_Nom_T" = "GDP Per Capita 2018 (USD Thousands)" ,
"GDP_PPP" = "GDP Purchasing Power Parity 2018 (USD Trillions)",
"Aid_Perc" = "Average % of Gross National Income Given in Foreign Aid (2000-2016)")

variable_labeller <- function(variable,value){
return(variable_names[value])}


OECD_IMFlong_tidy <- OECD_IMFlong %>%
mutate(value1 = str_replace_all(value, "(,|\\$)", "")) %>%
mutate(value1 = as.numeric(value1))


ggplot(OECD_IMFlong_tidy, aes(x=Country, y=value1, fill=Country))+
geom_bar(stat='identity')+
geom_text(aes(label=value), vjust=1.6, color="white", size=2.1)+
facet_wrap(~measure, scales="free_y", ncol=1, labeller= variable_labeller)+
labs(caption="Source: Official Development Assistance Database & IMF World Economic Outlook") +
theme_grey() +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
axis.text.y = element_blank(),
axis.title.y = element_blank(),
axis.title.x = element_blank())
#> Warning: The labeller API has been updated. Labellers taking `variable` and
#> `value` arguments are now deprecated. See labellers documentation.

创建于 2020-03-16 由 reprex package (v0.3.0)

关于r - ggplot 在多面图上有一些错误。尝试使用多面 ggplot 协调 y 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60698154/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com