gpt4 book ai didi

r - 如何在我的李克特图表的每个条形上输出正确的百分比?

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

我试图让我的代码在每个单独的条形顶部输出百分比。现在,下面显示的百分比是错误的。我的代码结合了标签 1 和 2 以及标签 3 和 4,然后在不正确的一侧输出这些数字。

是否有正确标记这些条的功能? 我包括我的代码、来自 .csv 文件的数据和当前的可视化。

library(ggplot2)
library(reshape)
library(likert)
library(dplyr)

setwd("~/Desktop/")

df <- read.csv("Likert_Test.csv")

df[2:3] <- lapply(df[2:3], as.factor)
colnames(df)[2:3] <- c("cake?", "cookies?")

df[2:3] <- lapply(df[2:3], factor, levels = 1:4)
myplot <- likert(df[2:3], grouping = df$gender)

plot(myplot, centered = FALSE, col = c("#0A2240", "#3474DA", "#C1A783", "#323A45")) +
scale_y_continuous(labels = function(x) paste0(x, "%")) +
ggtitle("How much do you like...") +
theme(legend.title = element_blank(),
axis.title = element_blank(),
plot.title = element_text(hjust = 0.5))

enter image description here
    gender      cake         cookies
Male 3 1
Male 2 2
Male 2 2
Male 4 2
Male 2 3
Male 2 3
Male 2 3
Male 1 1
Male 4 2
Female 1 1
Female 3 1
Female 3 4
Female 3 4
Female 1 1
Female 4 3
Female 4 2
Female 3 2
Female 2 1
Female 3 1

最佳答案

这是一个示例答案 - 使用 ggplot 而不使用 likart 包。



library(tidyverse)
#> Warning: package 'tibble' was built under R version 3.6.3
#> Warning: package 'dplyr' was built under R version 3.6.3
df <- readr::read_table("gender cake cookies
Male 3 1
Male 2 2
Male 2 2
Male 4 2
Male 2 3
Male 2 3
Male 2 3
Male 1 1
Male 4 2
Female 1 1
Female 3 1
Female 3 4
Female 3 4
Female 1 1
Female 4 3
Female 4 2
Female 3 2
Female 2 1
Female 3 1")

df %>%
pivot_longer(-gender, names_to = "question", values_to = "values") %>%
group_by(gender, question) %>%
count(values) %>%
mutate(
level = case_when(values %in% c(3, 4) ~ "high",
values %in% c(1, 2) ~ "low",
TRUE ~ "NA"),
values = as.character(values),
total_n = sum(n),
pct_low = sum(n[level == "low"]) / sum(n),
pct_high = sum(n[level == "high"]) / sum(n)
) %>%
print() %>%
ggplot(aes(x = gender, y = n, fill = values)) +
geom_bar(aes(fill = values), position = position_fill(reverse = TRUE), stat = "identity") +
scale_fill_manual(values = c("#0A2240", "#3474DA", "#C1A783", "#323A45")) +
scale_y_continuous(labels = scales::percent_format(),
expand = expand_scale(mult = .05)) +
geom_text(aes(
y = -.05,
x = gender,
label = scales::percent(round(pct_low, 2), accuracy = 1)
),
data = . %>% filter(level == "low")) +
geom_text(aes(
y = 1.05,
x = gender,
label = scales::percent(round(pct_high, 2), accuracy = 1)
),
data = . %>% filter(level == "high")) +
coord_flip() +
facet_wrap(~ question, nrow = 2) +
theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black"),
plot.title = element_text(hjust = 0.5),
legend.position = "bottom"
) +
labs(title = "How Much do you like...",
fill = "",
x = NULL,
y = NULL)
#> # A tibble: 15 x 8
#> # Groups: gender, question [4]
#> gender question values n level total_n pct_low pct_high
#> <chr> <chr> <chr> <int> <chr> <int> <dbl> <dbl>
#> 1 Female cake 1 2 low 10 0.3 0.7
#> 2 Female cake 2 1 low 10 0.3 0.7
#> 3 Female cake 3 5 high 10 0.3 0.7
#> 4 Female cake 4 2 high 10 0.3 0.7
#> 5 Female cookies 1 5 low 10 0.7 0.3
#> 6 Female cookies 2 2 low 10 0.7 0.3
#> 7 Female cookies 3 1 high 10 0.7 0.3
#> 8 Female cookies 4 2 high 10 0.7 0.3
#> 9 Male cake 1 1 low 9 0.667 0.333
#> 10 Male cake 2 5 low 9 0.667 0.333
#> 11 Male cake 3 1 high 9 0.667 0.333
#> 12 Male cake 4 2 high 9 0.667 0.333
#> 13 Male cookies 1 2 low 9 0.667 0.333
#> 14 Male cookies 2 4 low 9 0.667 0.333
#> 15 Male cookies 3 3 high 9 0.667 0.333



创建于 2020-04-22 由 reprex package (v0.3.0)

关于r - 如何在我的李克特图表的每个条形上输出正确的百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61353320/

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