【问题标题】:Two questions re axes for qplot bar plot in RR中qplot条形图的两个问题
【发布时间】:2014-12-18 15:24:22
【问题描述】:

我正在 qplot 中创建条形图(R 中的ggplot2 函数)并且有两个问题。

  1. 当我将 x 轴刻度值旋转 90 度时,它们不再位于列和刻度线下方的中心。这对于只有几列似乎不是什么大问题,但我正在使用 facet-wrap 创建具有 12 列的多个图,然后偏移变得非常明显(然后比例值位于列之间)。

  2. x 轴值是将日期作为因子。如何按日期而不是按字母顺序对列进行排序。如果我将日期转换为日期格式,它们将正确排序,但会在我不想要的连续日期刻度上间隔开。当然,这可能是任何类型的 x 轴数据的问题。

这里有一个虚拟数据集和 R 代码来说明问题。

date <- c("Oct 2006","Feb 2007","Nov 2007","Feb 2008","Oct 2008","Feb 2009","Nov 2009")
count <- c(23,54,12,78,23,34,12)
df <- data.frame(date,count)

qplot(x=date, y=count, data=df, geom="bar", stat="identity") + theme (axis.text.x = element_text(angle = 90,))

【问题讨论】:

    标签: r ggplot2 axis-labels


    【解决方案1】:
    1. 为方便起见,请将您的日期字符串转换为适当的日期格式,然后您不必担心自己订购它们

    2. 默认情况下,垂直对齐方式为 1,即刻度标签位于刻度右侧,0 位于左侧,0.5 居中。

    我还建议切换到 ggplot 而不是 qplot

    date <- c("Oct 2006","Feb 2007","Nov 2007","Feb 2008","Oct 2008","Feb 2009","Nov 2009")
    df <- data.frame(
      count = c(23,54,12,78,23,34,12),
      date = factor(d <- as.Date(paste0('01 ', date), '%d %b %Y'),
                    labels = format(d, '%b %Y'))
      )
    
    
    library(ggplot2)
    qplot(x=date, y=count, data=df, geom="bar", stat="identity") + 
      theme (axis.text.x = element_text(angle = 90, vjust = .5))
    

    【讨论】:

    • 太完美了,非常感谢。我曾尝试使用 hjust 但它似乎并没有改变比例值的位置,但我猜是因为比例值是旋转的 vjust 会适用。我没有意识到我可以将日期文本转换为 as.date 然后使用“因子”。我尝试以日期格式设置日期,但随后将它们作为细列分散在 3 年连续 x 轴上。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    相关资源
    最近更新 更多