在Y和X的类别Z的图中,我希望类别由不同collor的点表示,除了一个类别,我希望将其显示为连接点的线。
以下是迄今为止的数据和内容:
library(ggplot2);library(reshape);library(scales);library(directlabels)
dat <- read.csv("https://dl.dropboxusercontent.com/u/4329509/Fdat_graf.csv")
dat_long <- melt(dat, id="ano")
p <- qplot(ano,value, data=dat_graf_long, colour=variable)+
scale_y_log10(breaks=c(.1,1,10,100,500,1000),labels = comma) +
scale_x_continuous(breaks=seq(from=1960, to=2010, by=10)) +
theme_bw()
direct.label(p)
我想将“Lei_de_Moore”类别用一行代表,如本例所示(在Stata中完成):
另外,我想改变一些事情(也许我应该在不同的主题中问tem?):
编辑:我问过另一个关于如何为此图表嵌入图例的问题(这篇文章:Legend as text alongside points for each category and with same collor)
答案 0 :(得分:0)
如果您使用ggplot
并且只将一部分数据传递给不同的geom,则可以混合使用geoms。在这里,您可以将dat_long
中的所有内容传递到geom_point
,variable
为Lei_de_Moore
的行除外,然后只将dat_long
行传递给geom_line
一个不同的电话。
p <- ggplot(dat_long, aes(ano, value, color=variable)) +
geom_point(data=dat_long[dat_long$variable != 'Lei_de_Moore',]) +
geom_line(data=dat_long[dat_long$variable == 'Lei_de_Moore',]) +
scale_y_log10(breaks=c(.1,1,10,100,500,1000),labels = comma) +
scale_x_continuous(breaks=seq(from=1960, to=2010, by=10)) +
theme_bw()
对于颜色,请查看RColorBrewer
包装调色板。安装软件包并使用?brewer.pal
查看更多选项。例如,这个可能有效:
p <- p + scale_color_brewer(palette="Set1")
对于y轴标签,您可能不得不一起破解某些东西。看看this question。所以你可以这样做:
fmt <- function(){
f <- function(x) sub(".", ",", as.character(round(x,1)), fixed=T)
f
}
p <- ggplot(dat_long, aes(ano, value, color=variable)) +
geom_point(data=dat_long[dat_long$variable != 'Lei_de_Moore',]) +
geom_line(data=dat_long[dat_long$variable == 'Lei_de_Moore',]) +
scale_y_log10(breaks=c(.1,1,10,100,500,1000), labels=fmt()) +
scale_x_continuous(breaks=seq(from=1960, to=2010, by=10)) +
theme_bw() +
scale_color_brewer(palette="Set1")