【问题标题】:ordered ggplot2 dotplot with facet带刻面的有序 ggplot2 dotplot
【发布时间】:2013-12-16 20:45:08
【问题描述】:

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

我希望情节和钥匙按呈现顺序匹配。这可以通过将变量 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)

【问题讨论】:

    标签: r ggplot2


    【解决方案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)
    

    【讨论】:

    • 这没有回答问题。安东尼现在在 y 轴上排在第一位,而科比在右侧排在第一位。我的问题:如何重新排序以使 Anthony 在 y 轴上首先在键中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 2019-01-07
    • 2021-01-09
    • 1970-01-01
    相关资源
    最近更新 更多