用facet命令ggplot2 dotplot

时间:2013-12-16 20:45:09

标签: r ggplot2

我正在从http://blogs.bgsu.edu/math6820cwenren/files/2011/04/ggplot-dotplot.png复制此点图http://blogs.bgsu.edu/math6820cwenren/2011/04/27/ggplot2/的某个版本。代码如下。

我希望情节和关键按照演示顺序进行匹配。这可以通过重新排序变量ind来实现,如图中所示,即Tracy,LeBron,Kobe,Anthony。反之亦然,重新排序密钥。我尝试用几种方法重新排序因子,但键中的顺序总是颠倒图中的顺序。

如何重新排序以使演示文稿保持一致?

Kobe=c(31.6, 28.3, 26.8, 27.0, 24.8)
LeBron=c(27.3, 30.0, 28.4, 29.7, 26.0)
Tracy=c(24.6, 21.6, 15.6, 8.6, 8.5)
Anthony=c(28.9, 25.7, 22.8, 28.2, 25.3)
year=c(2006, 2007, 2008, 2009, 2010)

data1=cbind(Kobe, LeBron, Tracy, Anthony)

data=data.frame(data1,row.names=year)

d=data.frame(Year=dimnames(data)[[1]],stack(data))

p=ggplot(d, aes(values, ind, color=ind))
p + geom_point()+ facet_wrap(~Year, ncol=1)

1 个答案:

答案 0 :(得分:1)

您可以使用factor和指定级别顺序的字符向量对级别进行排序:

d$ind <- factor(d$ind, levels = unique(d$ind))

这里,unique(d$ind)以数据框中的出现顺序返回值。这是color比例级别的顺序。

您希望y轴的级别颠倒。默认情况下,订单从下到上。您可以使用反转级别顺序创建第二个变量ind2

d$ind2 <- factor(d$ind, levels = rev(levels(d$ind)))

这将用作y轴的变量。

library(ggplot2)
ggplot(d, aes(x = values, y = ind2, color = ind)) +
  geom_point() + facet_wrap(~ Year, ncol = 1)

enter image description here