qplot ticks与图中的线不对应

时间:2012-06-16 17:42:22

标签: r ggplot2

我有以下代码来绘制内容。我也显示了结果。我的问题是,我希望线条与刻度线同步。

有任何建议吗?

感谢您的时间。

g <- qplot(hora, puntual, colour=part, data=x, group=part) +
geom_line() +
geom_pointrange(aes(ymin = inf, ymax = sup)) +
scale_color_manual(values=c("red", "green")) + 
scale_y_continuous(breaks=seq(1, 55, 0.5)) + 
opts(panel.background = theme_rect(fill='white', colour='gray'))
jpeg("plot.jpg", width=800, height=800)
print(g)
dev.off()

追逐: 这是我正在阅读的DF(摘录)

72000,   40.920,  44.478,
72010,   41.197,  42.212,
72020,   41.462,  41.893,
72030,   41.523,  41.759,
72045,   41.509,  41.725,
72050,   41.504,  41.719,
72055,   40.920,  44.478,

第一列是X,第二列和第三列是jpg样本中显示的红色区间。

result

1 个答案:

答案 0 :(得分:1)

你的例子仍然远不可复制。当我们要求再现性时,我们并不是很难。请记住,您要求随机陌生人抽出时间(周末!)来帮助您。尽可能在前面完成尽可能多的工作对你来说是礼貌的。如果我可以简单地复制+粘贴一些代码并在干净的R会话中运行它以查看正在发生的事情,那么我更有可能将时间花在这个问题上。这就是我的意思:

创建一些可重现的数据:

dat <- data.frame(x = 1:10,y = sample(10,10,replace = TRUE))

那是一行,让回答者的生活更加轻松。。我们要求人们提供可重复的示例的另一个原因是这样做通常会导致您解决自己的问题。

当我完成开发这个可重复的例子的过程时,我首先制作了这个图:

ggplot(dat,aes(x = x,y = y)) + 
    geom_point() + 
    scale_y_continuous(breaks = seq(1,10,0.5))

enter image description here

一切看起来都很好,对吧?但请注意,由于默认面板背景为灰色,因此网格线为白色。此时警报铃声应该在你脑海中消失......

接下来我绘制了这个:

ggplot(dat,aes(x = x,y = y)) + 
    geom_point() + 
    scale_y_continuous(breaks = seq(1,10,0.5)) + 
    opts(panel.background = theme_rect(fill='white', colour='gray'))

enter image description here

请注意,“网格线”现在实际上不是网格线。它们是theme_rect背景的边界。这就是为2D对象指定颜色时会发生的情况;边框是彩色的。

此时我意识到我们只需要重新着色网格线:

ggplot(dat,aes(x = x,y = y)) + 
    geom_point() + 
    scale_y_continuous(breaks = seq(1,10,0.5)) + 
    opts(panel.background = theme_rect(fill='white', colour='gray'),
         panel.grid.minor = theme_blank(),
         panel.grid.major = theme_line(colour = "grey80"))

enter image description here

我删除了theme_blank的次要网格线,只是重新着色了主要网格线。他们一直都在那里,只是画着白色!

所以这里的教训是,制作一个可重复的例子并不仅仅是我们的回答者是懒惰的......它也会让你受益匪浅! :)