【发布时间】:2018-09-06 09:29:09
【问题描述】:
但是,我在为点着色时遇到了一些困难,然后在不丢失原始点颜色的情况下为标签着色。我不知道我应该在多个问题中还是一起提出问题。我想通了,因为它们与同一个图表有关,但如果不允许这样做,请告诉我,我可以在它被否决之前进行编辑。这简直是不公平的。我在下面使用 cmets 发布了一个可重现的示例,以使其更容易。
我有两个基本相同的数据框。其中一个有一个额外的列,df2$plotter,我用它来创建数据的子集,然后绘制第二级。颜色向量 cdf, 是一个向量,其中我将 HEX 值作为颜色。
- 着色点
如果它是一个级别,我会使用 scale_color_manual 和 fill/color 这样的点。但是,由于我有两个数据框,我想我可以调用color vector,也就是说,它将用于根据向量中的值进行着色。然而它并没有使用我指定的那些颜色。相反,它将D to O 标记为murky green 而不是grey,如十六进制代码所示:#A9A9A9,并使用颜色作为图例的一部分。我更喜欢如下映射。我不知道如何创建一个颜色向量,以便将每个单元格的值用作实际颜色,该向量还需要为标签着色。其次,当我尝试为第二级传递相同的向量时,geom_point 中的 aesthetics 为 Error: Aesthetics must be either lenght 1 or the same as the data 这两者都与将 plotter 添加到调色板中,但我很可能猜测是大小向量本身。我也不想创建另一个颜色向量,而只是参考第一个。
• Alice(两者都是Alice and Alice2)是#b79f00
• Bob 是 #00ba38
• Charlie 是 #00bfc4
•Peter is#619cff`
• Quin 是 #F8766D
•Roger is#f564e3`
• 那么D to O 就是#A9A9A9
- 标记和着色所述标签
我可以用geom_text.添加标签然后我调用相同的数据和美学。我的问题部分是上面提到的着色,但现在当我给它们着色时,我失去了我的color,但保留了我的积分fill。观察下方。我不知道为什么我的color 会迷路或如何修复它们。我试图先绘制文本然后绘制点,但这并没有改变任何东西,我也不会猜到它。简而言之,每个标签的颜色都应与其点相同。
可重现的数据:
k<-18
ct<-12
x_vector<-seq(1,k,1)
radius<-rep(5,k,1)
name<-c('Alice','Bob','Charlie','D','E','F','G','H','I','J','K','L','M','N','O','Peter','Quin','Roger')
df<-data.frame(x_vector,radius,name)
name2<-c('Alice2','Bob2','Charlie2','D','E','F','G','H','I','J','K','L','M','N','O','Peter2','Quin2','Roger2')
plotter<-c(1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1)
radius2<-rep(7,k,1)
df2<-data.frame(x_vector,radius2,name2,plotter)
color1<-c('#F8766D'
,'#F564E3'
,'#B79F00'
)
other_color<-c(rep('#A9A9A9',ct))
color2<-c('#00BFC4'
,'#619CFF'
,'#00BA38'
)
cdf<-c(color1,other_color,color2) #color palette
df$label_radius<-df$radius+0.5 ##used to adjust the labels by a radius of 0.5
p<-ggplot()+
## Level1
geom_point(data=df,aes(x=x_vector,y=radius,color=cdf,fill=cdf),size=3,shape=21)+
geom_text(data=df,aes(x=x_vector,y=label_radius,label=name,color=name))+
## Level2
geom_point(data=df2[(df2$plotter>0),], aes(x=x_vector,y=radius2,color=name2,fill=name2),size=3,shape=21)+
geom_text(data=df2[(df2$plotter>0),], aes(x=x_vector,y=radius2,label=name2,color=name2))+
## transform into polar coordinates
coord_polar(theta='x',start=0,direction=-1,clip='on')+
## sets up the scale to display from 0 to 7
scale_y_continuous(limits=c(0,7))+
## Used to 'push' the points so all 'k' show up.
expand_limits(x=0)
p
【问题讨论】:
标签: r ggplot2 colors geom-text