我的公司希望在R中进行报告,他们希望尽可能多地保留Excel报告。在ggplot2中有没有办法让Excel在Excel中保持三维外观?我想要做图,看起来像下面的是:使用ggplot2的Excel图形
我已经能够亲近。这是我到目前为止:
gender <- c("Male", "Male", "Female", "Male", "Male", "Female", "Male", "Male", "Female", "Male",
"Male", "Female")
race <- c("African American", "Caucasian", "Hispanic", "African American", "African American",
"Caucasian", "Hispanic", "Other", "African American", "Caucasian", "African American",
"Other")
data <- as.data.frame(cbind(gender, race))
gender_data <- data %>%
count(gender = factor(gender)) %>%
ungroup() %>%
mutate(pct = prop.table(n))
race_data <- data %>%
count(race = factor(race)) %>%
ungroup() %>%
mutate(pct = prop.table(n))
names(race_data)[names(race_data) == 'race'] <- 'value'
names(gender_data)[names(gender_data) == 'gender'] <- 'value'
# Function for fixing x axis that creeps into other values
addline_format <- function(x,...){
gsub('\\s','\n',x)
}
ggplot() +
geom_bar(stat = 'identity', position = 'dodge', fill = "#5f1b46",
aes(x = gender_data$value, y = gender_data$pct)) +
geom_bar(stat = 'identity', position = 'dodge', fill = "#3b6b74",
aes(x = race_data$value, y = race_data$pct)) +
geom_text(aes(x = gender_data$value, y = gender_data$pct + .03,
label = paste0(round(gender_data$pct * 100, 0), '%')),
position = position_dodge(width = .9), size = 5) +
geom_text(aes(x = race_data$value, y = race_data$pct + .03,
label = paste0(round(race_data$pct * 100, 0), '%')),
position = position_dodge(width = .9), size = 5) +
scale_x_discrete(limits = c("Male", "Female", "African American", "Caucasian", "Hispanic", "Other"),
breaks = unique(c("Male", "Female", "African American", "Caucasian", "Hispanic",
"Other")),
labels = addline_format(c("Male", "Female", "African American", "Caucasian",
"Hispanic", "Other"))) +
labs(x = '', y = '') +
scale_y_continuous(labels = scales::percent,
breaks = seq(0, 1, .2)) +
expand_limits(y = c(0, 1)) +
theme(panel.grid.major.x = element_blank() ,
panel.grid.major.y = element_line(size=.1, color="light gray"),
panel.background = element_rect(fill = '#f9f3e5'),
plot.background = element_rect(fill = '#f9f3e5'))
输出结果如下,在这一点上任何帮助,将不胜感激。我也需要把性别和种族的字段之间的空间,如果有人能提供帮助的还有:
你可能会更好运格格:https://stackoverflow.com/a/26822348/1412059但谁会想重新创建这样一个可怕的阴谋?这就像驾驶一辆特斯拉,想要从后方产生蓝色的云。 – Roland
不要让@哈利看到这一点,他可能有动脉瘤。 – tkmckenzie
[我的特斯拉与_green_烟](https://stackoverflow.com/a/19943527/1851712)。对不起,伤了你的眼睛@罗兰,哈德利等人。另请参阅[theme_excel](https://cran.r-project.org/web/packages/ggthemes/vignettes/ggthemes.html)“_对于那种经典的丑陋外观和感觉_”。 – Henrik