如何通过geom_tile制作一个甜甜圈图

问题描述

我想根据分类数据制作一个简单的圆形甜甜圈注释图。因此,我首先制作一个简单的geom_tile图,然后再添加coord_polar()函数。但是,似乎我无法控制ylim制作甜甜圈的形状,因为它会产生以下错误

错误:离散值提供给连续刻度。

现在我被这个数字所困扰:

See current plot

再现情节并帮助我:

examp = data.frame(rep(c("A","B"),each=12),rep(c("C","D"),times=12),rep(c("E","F","G"),each=8),"H",1:24)
colnames(examp) = c("col1","col2","col3","col4","person")
examp$person = paste0("per.",examp$person)
examp2 <- melt(examp,id.var = 'person')

ggplot(examp2,aes(x=person,y=variable)) +
  geom_tile(aes(fill = value),colour = "white")+ 
  scale_y_discrete(breaks=y_breaks,labels=y_labels) +
  coord_polar()+
  theme(panel.background=element_blank(),axis.title=element_blank(),panel.grid=element_blank(),axis.text.x=element_blank(),axis.ticks=element_blank(),axis.text.y=element_text(size=5))

解决方法

scale_y_discrete()中指定扩展量对您有用吗?

ggplot(examp2,aes(x=person,y=variable)) +
  geom_tile(aes(fill = value),colour = "white")+ 
  scale_y_discrete(expand = expansion(mult = c(0.5,0),add = 0)) + # change amount if needed
  coord_polar()+
  theme(panel.background=element_blank(),axis.title=element_blank(),panel.grid=element_blank(),axis.text.x=element_blank(),axis.ticks=element_blank(),axis.text.y=element_text(size=5))

(我跳过了中断/标签,因为您实际上没有在问题中定义它们。)

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...