R Ggplot条形图:如何在y轴上显示图标
我对R非常陌生,并试图用我的数据创建一些有意义的条形图。下面是使用R Ggplot条形图:如何在y轴上显示图标,r,ggplot2,R,Ggplot2,我对R非常陌生,并试图用我的数据创建一些有意义的条形图。下面是使用ggplot2的简单条形图的一些示例代码: 库(ggplot2) #具有4个不同级别的变量 类别这里有一种方法使用dplyr 设置库并生成数据 生成绘图,将一次校正更改y=quality为y=count\u q plot1@sachin2014展示了一个数据预处理的好例子。但是我们也可以使用ggplot2中的特殊变量来做同样的事情 我们可以使用taply来获取的和。计数..s的每个.x...x..是每个类别,因为我们在主aes()
ggplot2
的简单条形图的一些示例代码:
库(ggplot2)
#具有4个不同级别的变量
类别这里有一种方法使用dplyr
设置库
并生成数据
生成绘图,将一次校正更改y=quality
为y=count\u q
plot1@sachin2014展示了一个数据预处理的好例子。但是我们也可以使用ggplot2
中的特殊变量来做同样的事情
我们可以使用taply
来获取的和。计数..
s的每个.x..
.x..
是每个类别,因为我们在主aes()
中定义了它
谢谢!在您的示例中,前面的说明说明了这一点。但是,是否有可能获得y轴的进位比例(从0%到100%),以便可以直观地表示百分比值?这样,我就可以从图形本身看出哪个类别具有最大比例的“真实”质量。@Mari我已经对代码进行了一些更新。这能解决你的问题吗?是的,好多了。谢谢现在进行一些微调:我如何隐藏质量为0/false的符号,而只显示质量为1/true的符号?@Mari太好了,你能分享你的解决方案吗?谢谢我从整个代码中删除了fill=quality
,而不是label=round((…count…./tapply(…count….,…x….,sum)[…x….])*100,1)
你可以使用label=scales::percent(…count…./tapply(…count….x….,sum)[…x….),精度=0.01)
谢谢!我也会试试这个,看看什么最适合我的数据。
category <- as.factor(c(1, 2, 3, 3, 2, 2, 1, 2, 4, 4, 1, 3, 2, 2, 2, 1))
quality <- as.factor(c(0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1))
mydata <- data.frame(category, quality)
mydata<- mydata %>% group_by(category,quality) %>% mutate(count_q = n()) %>% ungroup() %>%
group_by(category) %>% mutate(tot_q=n(),pc=count_q*100/tot_q) %>% unique() %>% arrange(category)
plot1 <- ggplot(mydata, aes(x= category, y = pc)) +
geom_bar(position = 'dodge', stat='identity', fill="red") +
geom_text(aes(label=round(tot_q)), position=position_dodge(0.9), vjust=-0.5) +
ggtitle("example") +
xlab("category") +
ylab("count")
plot1
library(ggplot2)
library(dplyr)
#a variable with 4 different levels
category <- as.factor(c(1, 2, 3, 3, 2, 2, 1, 2, 4, 4, 1, 3, 2, 2, 2, 1))
#a variable with either 0 ("false") or 1 ("true")
quality <- as.factor(c(0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1))
mydata <- data.frame(category, quality)
#
mydata<- mydata %>% group_by(category,quality) %>% mutate(count_q = n()) %>% ungroup() %>%
group_by(category) %>% mutate(tot_q=n(),pc=count_q*100/tot_q) %>% unique() %>% arrange(category)
plot1 <- ggplot(mydata, aes(x= category, y = count_q, fill=quality)) +
geom_bar(position = 'dodge', stat='identity') +
geom_text(aes(label=round(pc,digits=1)), position=position_dodge(width=0.9), vjust=-0.25) +
ggtitle("example") +
xlab("category") +
ylab("count") +
labs("true")
plot1
library(ggplot2)
ggplot(mydata, aes(x= category, fill=quality)) +
geom_bar(aes(y = ..count..),width=0.75, position = "dodge") +
geom_text(stat="count", aes(label = round((..count../tapply(..count.., ..x.. ,sum)[..x..])*100,1)),
position=position_dodge(width=0.9), vjust=-0.25) +
ggtitle("example") + xlab("category") + ylab("count") + labs("true")