但是我在给点着色时遇到了一些困难,然后为标签着色但又不丢失原始点的颜色。我不知道该问多个问题还是一起问我的问题。由于它们与同一张图有关,因此我将所有数字汇总在一起,但是,如果不允许这样做,请告诉我,我可以对其进行编辑,然后再对其进行表决。那简直是不公平的。我在下面发布了一个可复制的示例,并添加了注释,以使其更容易。
我有两个基本相同的数据框。其中之一有一个额外的列df2$plotter
,我用它来创建数据的子集,然后绘制第二级。颜色向量cdf,
是将十六进制值作为颜色的向量。
- 着色点
如果这是一个级别,那么我将使用scale_color_manual
和fill/color
这两个点。但是,由于我有两个数据帧,所以我想我可以调用color vector
,也就是说可以根据向量内的值进行着色。但是它不使用我分配的那些颜色。而是将D to O
标记为murky green
,而不是十六进制代码grey
指示的#A9A9A9
,并将颜色用作图例。我希望映射如下。我不知道如何创建颜色矢量,以便将每个单元格的值用作实际颜色,该矢量也需要为标签着色。其次,当我尝试将相同的向量传递给第二级时,aesthetics
中的geom_point
与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
答案 0 :(得分:1)
通常,我个人比较喜欢将所有数据都放在一个数据框中,并向其中添加另一个变量:因此,将{{1}替换为Bob1
和Bob2
,而不是df$name
1}},然后创建df$name=Bob
。
这样,为所有df$nr
出现分配相同的颜色就变得容易了。
但请坚持以下示例:您可以使用Bob
和scale_color_manual
手动设置颜色值(请参见link)。
scale_fill_manual