楼主: xlyshuai
28816 7

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

  • 1关注
  • 0粉丝

已卖:409份资源

硕士生

28%

还不是VIP/贵宾

-

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

楼主
xlyshuai 发表于 2015-4-8 15:39:25 |AI写论文
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
拉您进交流群
GMT+8, 2025-12-30 10:06