Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R Ggplot条形图:如何在y轴上显示图标_R_Ggplot2 - Fatal编程技术网

R Ggplot条形图:如何在y轴上显示图标

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()

我对R非常陌生,并试图用我的数据创建一些有意义的条形图。下面是使用
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")