设置y限制时获取“非连续变量提供错误”

时间:2012-02-19 16:09:57

标签: r plot ggplot2

我在使用ggplot2 geom_line图时遇到了一个小问题。

当我应用ylim时,图表变为空白。在默认模式下,ggplot使y轴与所有值混淆,但是我想将参考限制增加到很小的大间隙,即从17.3,17.5,17.7到17-18,图形完好无损。我使用ylim(c(15,30)),限制增加但图表消失。

我尝试使用scale_y_continuous(breaks=c(15,30))

  

[错误:提供给scale_y_continuous的非连续变量]

scale_y_discrete(breaks=c(15,30))

[整个y栏消失]

enter image description here

限制之后: enter image description here

DataFrame:

>head(meltedB)
             Mouse     Type       days weight
    1      21-H807  control 2011-09-23   27,0
    2      21-H808  control 2011-09-23   27,8
    3 21-H809/J125 knockout 2011-09-23   29,1
    4      21-H810  control 2011-09-23   27,2
    5      21-H811  control 2011-09-23   18,2
    6      21-H812  control 2011-09-23   18,8

使用的命令:

ggplot(na.omit(meltedB),aes(factor(days),weight,group=Mouse)) + 
    geom_line(aes(color=Mouse),size=2) + 
    facet_grid(Type~.)

**对于那些正在努力绘制NA值的人,在数据框中使用na.omit,它们不会被绘制。

2 个答案:

答案 0 :(得分:3)

R提供了两个很大的提示来诊断这个问题。第一个是关于y轴刻度标签的非常丑陋的决定。第二个是显式错误消息,表示您将“非连续”变量传递给scale_y_continuous

您的y变量存储为因子(或可能是字符)。在控制台输入str(meltedB)进行确认。

问题很可能是逗号。您需要在读取数据时返回,并将dec参数更改为read.table,默认设置为句点。

答案 1 :(得分:0)

问题是ylim()和(scale_y_discrete())会切断超出这些新边界的数据,因为它会自动将limits()设置为相同的。(/ p>

有两种解决方法

  • 使用scale_y_continuous(breaks = c(15,30),limits = range(dataset))
  • 使用coord_cartesian(ylim = c(15,30))而不是#(只对数据中的“zoomes”)