微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R中ggplot中的标签不正确

如何解决R中ggplot中的标签不正确

我有一个数据框:

   key    year flag     amount   pct   pos
   <chr> <int> <lgl>     <dbl> <dbl> <dbl>
 1 A      2017 TRUE  13870255. 0.487 0.244
 2 A      2017 FALSE 14609185. 0.513 0.744
 3 B      2017 TRUE  23562809. 0.807 0.403
 4 B      2017 FALSE  5641352. 0.193 0.903
 5 C      2017 TRUE  22683017. 0.772 0.386
 6 C      2017 FALSE  6686562. 0.228 0.886
 7 D      2017 TRUE  14840593. 0.500 0.250
 8 D      2017 FALSE 14846822. 0.500 0.750
 9 A      2018 FALSE 16131222. 0.485 0.242
10 A      2018 TRUE  17155225. 0.515 0.742

我创建了wrapepd染色的图,每个图内都有百分比标签-在黑框内突出显示左上角的第一个图似乎是正确的,但是中间向上的图则具有相反的颜色-51.54%的表面小于48.46%的表面。 如何固定标签,使表面与percantage相符?

enter image description here

用于ggplot的代码

ggplot(valuesDT,aes(x=1,y=pct,fill=flag)) +
          geom_bar(stat="identity",width=2)+
          coord_polar(theta='y')+
          theme_classic()+
          theme(axis.ticks=element_blank(),axis.title=element_blank(),axis.line.y = element_blank(),axis.line.x = element_blank(),axis.text.y = element_blank(),panel.grid  = element_blank(),axis.text.x = element_blank(),plot.title = element_text(color="blue",size=16,face="bold")) +
  scale_fill_manual(values = c("grey","green"),labels = c("F","non-T"),name = "")+
  geom_text(aes(y = pos,label = paste0(round(pct*100,digits = 2)," %")),size = 3)+
  facet_grid(key ~ year) 

看起来不错。但是后来我注意到标签不正确

数据:

structure(list(key = c("A","A","B","C","D","D"),year = c(2017L,2017L,2018L,2019L,2019L
),flag = c(TRUE,FALSE,TRUE,FALSE),amount = c(13870254.87,14609184.5199999,23562809.1300003,5641352.16999989,22683016.61,6686562.28999991,14840593.21,14846822.3,16131221.89,17155224.79,26853512.1700003,6337822.7600002,26324941.5199999,7775499.19999981,16527294.6700001,18136429.54,18660941.7799999,19628554.06,29955135.69,7154960.09000001,28728476.97,8923411.36999992,18634207.47,18495786.62),pct = c(0.487026962857644,0.512973037142356,0.806830536509883,0.193169463490117,0.772330331573125,0.227669668426875,0.499895088711952,0.500104911288048,0.484618320635959,0.515381679364041,0.809051887386679,0.190948112613322,0.771982442577655,0.228017557422345,0.476789353904222,0.523210646095778,0.487364520493513,0.512635479506487,0.807196399265127,0.192803600734873,0.763002288506204,0.236997711493796,0.501864003124596,0.498135996875404),pos = c(0.243513481428822,0.743513481428822,0.403415268254941,0.903415268254941,0.386165165786563,0.886165165786563,0.249947544355976,0.749947544355976,0.24230916031798,0.742309160317979,0.404525943693339,0.904525943693339,0.385991221288828,0.885991221288828,0.238394676952111,0.738394676952111,0.243682260246756,0.743682260246756,0.403598199632564,0.903598199632563,0.381501144253102,0.881501144253102,0.250932001562298,0.750932001562298)),row.names = c(NA,-24L),groups = structure(list(year = c(2017L,key = c("A",.rows = structure(list(1:2,3:4,5:6,7:8,9:10,11:12,13:14,15:16,17:18,19:20,21:22,23:24),ptype = integer(0),class = c("vctrs_list_of","vctrs_vctr","list"))),12L),class = c("tbl_df","tbl","data.frame"),.drop = TRUE),class = c("grouped_df","tbl_df","data.frame"))

解决方法

尝试在group中启用key的{​​{1}}。在这里的代码和图中,您可以看到如何正确放置问题中提到的内容:

aes()

输出:

enter image description here

另外,请注意如何分配标签,而无需使用library(tidyverse) #Code ggplot(valuesDT,aes(x=1,y=pct,fill=flag,group=key)) + geom_bar(stat="identity",width=2)+ coord_polar(theta='y')+ theme_classic()+ theme(axis.ticks=element_blank(),axis.title=element_blank(),axis.line.y = element_blank(),axis.line.x = element_blank(),axis.text.y = element_blank(),panel.grid = element_blank(),axis.text.x = element_blank(),plot.title = element_text(color="blue",size=16,face="bold")) + scale_fill_manual(values = c("grey","green"),labels = c("non-T","F"),name = "")+ geom_text(aes(y = pos,label = paste0(round(pct*100,digits = 2)," %")),size = 3)+ facet_grid(key ~ year) 选项,这是输出:

scale_fill_*()

输出:

enter image description here

可以看出百分比和面积放置正确。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?