楼主: xlyshuai
28037 7

[问答] ggplot2画图,柱状填充图中如何添加正确的文字? [推广有奖]

  • 1关注
  • 0粉丝

硕士生

32%

还不是VIP/贵宾

-

威望
0
论坛币
630 个
通用积分
0.2400
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
212 点
帖子
134
精华
0
在线时间
152 小时
注册时间
2008-9-20
最后登录
2022-7-29

5论坛币
在用ggplot2画柱状图时,需要每根柱子分几段,以显示百分比。

如下图,很明显第三根柱子的数字是错的,应该80%对应红色,20%对应蓝色。问题是,如何添加正确的百分比?
十分感谢!
p.jpeg

源代码如下:
  1. city<-c(        '北京', '上海',  '天津','天津')
  2. level<-c('3','3', '2','4+')
  3. rate<-c(1, 1, 0.8,0.2)
  4. rate2<-c('1', '1', '0.8','0.2')
  5. data1<-data.frame(city,level,rate,rate2)
  6. colnames(data1)<-c('city','level','rate','rate2')

  7. p <- ggplot(data = data1, aes(x=city,y=rate, fill = level))  ##  图形数据
  8. p <- p + geom_bar( stat = "identity",width = 0.4, position="stack")   
  9. p <- p + geom_text(label=paste(data1$rate*100,'%',sep = ''),colour = "black", vjust=00)  
  10. p <- p + labs(x="",y="份额\n",title = "各省各级别分布\n", fill = "级别")  
  11. p <- p + scale_y_continuous(labels = percent, breaks = seq(0, 1, 0.2))  
  12. p <- p + theme( plot.title = element_text(size = 16, face = "bold"))
  13. p
复制代码


最佳答案

关键词:ggplot2 gplot plot GPL City 如何
沙发
蓝色 发表于 2015-4-8 15:39:26 |只看作者 |坛友微信交流群
city<-c(        '北京', '上海',  '天津','天津')
level<-c('3','3', '2','4+')
rate<-c(1, 1, 0.8,0.2)
rate2<-c('1', '1', '0.8','0.2')
data1<-data.frame(city,level,rate,rate2)
colnames(data1)<-c('city','level','rate','rate2')

p <- ggplot(data = data1, aes(x=city,y=rate, fill = level))  ##  图形数据
p <- p + geom_bar( stat = "identity",width = 0.4, position="stack")   
p <- p + geom_text(label=paste(data1$rate*100,'%',sep = ''), colour = "white",
                   position=position_stack(.9), vjust=1.5)  
p <- p + labs(x="",y="份额\n",title = "各省各级别分布\n", fill = "级别")  
p <- p + scale_y_continuous(labels = percent, breaks = seq(0, 1, 0.2))  
p <- p + theme( plot.title = element_text(size = 16, face = "bold"))
p
Figure.png

试试这样

使用道具

藤椅
谢光法 发表于 2015-4-9 12:51:53 |只看作者 |坛友微信交流群
city<-c(        '北京', '上海',  '天津','天津')
level<-c('3','3','4+','2')
rate<-c(1, 1, 0.2,0.8)
rate2<-c('1', '1', '0.8','0.2')
data1<-data.frame(city,level,rate,rate2)
colnames(data1)<-c('city','level','rate','rate2')

p <- ggplot(data = data1, aes(x=city,y=rate, fill = level))  ##  图形数据
p <- p + geom_bar( stat = "identity",width = 0.4, position="stack")   
p <- p + geom_text(label=paste(data1$rate*100,'%',sep = ''),colour = "black", vjust=00)  
p <- p + labs(x="",y="份额\n",title = "各省各级别分布\n", fill = "级别")  
p <- p + scale_y_continuous(labels = percent, breaks = seq(0, 1, 0.2))  
p <- p + theme( plot.title = element_text(size = 16, face = "bold"))
p


Rplot01.png (4.95 KB)

Rplot01.png

已有 1 人评分论坛币 收起 理由
admin_kefu + 30 热心帮助其他会员

总评分: 论坛币 + 30   查看全部评分

使用道具

板凳
xlyshuai 发表于 2015-4-10 10:51:00 |只看作者 |坛友微信交流群
谢光法 发表于 2015-4-9 12:51
city
感觉您这样没能解决根本问题,谢谢!

使用道具

报纸
般若河图 学生认证  发表于 2015-4-11 13:49:52 |只看作者 |坛友微信交流群
不明觉厉啊

使用道具

地板
Frances_T 发表于 2016-1-1 16:41:41 |只看作者 |坛友微信交流群
初学,可以请教下breaks = seq(0, 1, 0.2)是控制哪里的参数吗?

使用道具

7
寒芒先到 发表于 2016-1-4 00:06:12 |只看作者 |坛友微信交流群
Rplot04.jpeg
不用ggplot画也还可以

使用道具

8
鸟儿找虫吃 发表于 2016-7-26 17:49:28 |只看作者 |坛友微信交流群
谢光法 发表于 2015-4-9 12:51
city
标题如何居中显示,谢谢
+labs(x="学生",y="数学",title="学生成绩")
最后标题没有居中

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-9 17:13