我正在使用ggplot2创建一个点图。我的数据基本上是三列x_axis,y_axis和z_axis的形式,x_axis和y_axis一起表示一对,z_axis表示对数。
所以我正在绘制x_axis vs y_axis并使用z_axis为点着色。 在某些情况下,我想跳过绘制特定计数,例如:计数1出现多次,有时我想跳过绘图1,但图例应该显示1.以下是我的代码:
> new<-read.table("PB1_combo.txt", header=T, sep="\t")
> bp <-ggplot(data=new, aes(x_axis,y_axis, colour=factor(z_axis)), size=z_axis) +
geom_point(size=5)
> bp + ggtitle("PB1-PB1")
> last_plot()+ scale_colour_discrete(name="Counts")
> last_plot()+ theme_bw()
Sample data from PB1_combo.txt
x_axis y_axis z_axis
14 576 2
394 652 2
759 762 2
473 762 2
65 763 3
114 390 2
762 763 4
758 762 2
388 616 2
217 750 2
65 762 2
473 763 2
743 759 2
65 213 2
743 762 2
答案 0 :(得分:1)
首先,您应该创建一个因子z_axis
。这样,即使不存在所有可能的值,R也会意识到它们。
new$Count <- factor(new$z_axis)
(顺便说一下,你应该选择new
以外的名字。)
然后,您可以只对您的数据进行分组,然后在调用drop=FALSE
时使用scale_color_discrete
显示图例中缺少的级别:
ggplot(data=new[new$Count!="2", ], aes(x_axis,y_axis, colour=Count), size=z_axis) +
geom_point(size=5) +
ggtitle("PB1-PB1") +
scale_colour_discrete(name="Counts", drop=FALSE) +
theme_bw()
实际上请参见this question。