【问题标题】:truncate y-axis, data disappears [duplicate]截断y轴,数据消失[重复]
【发布时间】:2016-01-04 18:27:53
【问题描述】:

当我截断 y 轴以仅显示 50 到 90 范围时,我的数据消失了。我是不是把 ylim 放错地方了?

电子表格如下所示:

xval yval_LWTW  linenames   SNP
1   61.4835166  MT9513      NN
2   61.93341478 RITA        GG
3   63.31277751 JUDITH      CC
4   63.60466558 CO04W320    GG
5   64.84700514 DECADE      NN

library(ggplot2)
library(xlsx)
data <- read.xlsx("RdataForGraphsofBestHits.xlsx", sheetIndex=4)
ggplot(data, aes(x=xval, y=yval_LWTW, fill=SNP,  
                     scale_fill_manual(values=c(GG="blue",CC="red",NN="green")))) + 
                     geom_bar(stat="identity", width=1) + 
                     theme(axis.title.x=element_blank())

这给了我一个很高的图,因为数据从 61 到 81。我想让 y 轴从 50 开始,所以图会更短,所以我在代码中添加了 + ylim(50.0, 90.0) .

library(ggplot2)
library(xlsx)
data <- read.xlsx("RdataForGraphsofBestHits.xlsx", sheetIndex=4)
ggplot(data, aes(x=xval, y=yval_LWTW, fill=SNP, 
        scale_fill_manual(values=c(GG="blue", CC="red", NN="green")))) + 
        geom_bar(stat="identity", width=1) + 
        theme(axis.title.x=element_blank()) + 
        ylim(50.0, 90.0)

现在我得到了绘图的灰色背景,y 轴很好地限制在 50 到 90 的范围内,但没有绘制数据。只有灰色背景和轴标签和图例。

我想我有使绘图水平的代码。

ggplot(data, aes(x=xval, y=yval_LWTW, fill=SNP, 
          scale_fill_manual(values=c(GG="blue", CC="red", NN="green")))) + 
          geom_bar(stat="identity", width=1) + 
          theme(axis.title.x=element_blank()) + 
          coord_fixed(ratio=1/2)

所以如果我能解决消失数据的问题,我就可以解决水平问题。

【问题讨论】:

  • 尝试过滤数据以匹配您所追求的输出。
  • 可能是stackoverflow.com/questions/25685185/…。即使用coord_cartesian(ylim=c(50,90))
  • 谢谢你,皮埃尔·拉福恩。这样一个简单但聪明的解决方案。不确定我是否可以在同一组指令中使用 coord_cartesian 和 coord_fixed(当我指定 1/2 比率时),所以我很可能会从每个数据点中减去 50。谢谢你的想法。
  • 嗯,嗯,我减去 50 的想法不是很好,除非我可以将 x 轴标签更改为显示 50 到 90 而不是 0 到 40。不知道你的意思是“过滤”,虽然我试图弄清楚如何使基线为 50。

标签: r ggplot2


【解决方案1】:

很好奇所以我把它编码了:

n <- 250
xval <- 1:n
yval <- 61 + 4*sin(2*pi*(1:n)/n) + 18*(1:n)/n
snp <- sample(c("CC",rep("GG",40),rep("NN",40)),n,replace=T)
data <- data.frame(xval=xval,yval_LWTW=yval,SNP=snp)

ggplot(data, aes(x=xval, y=yval_LWTW, fill=SNP)) +  
             scale_fill_manual(values=c(GG="blue",CC="red",NN="green")) + 
             geom_bar(stat="identity", width=1) + 
             theme(axis.title.x=element_blank())

产量:

还有这个:

ggplot(data, aes(x=xval, y=yval_LWTW, fill=SNP)) +  
             scale_fill_manual(values=c(GG="blue",CC="red",NN="green")) + 
             geom_bar(stat="identity", width=1) + 
             theme(axis.title.x=element_blank()) +
             ylim(50,90)

产量:

还有user20650的coord_cartesian建议:

ggplot(data, aes(x=xval, y=yval_LWTW, fill=SNP)) +  
             scale_fill_manual(values=c(GG="blue",CC="red",NN="green")) + 
             geom_bar(stat="identity", width=1) + 
             theme(axis.title.x=element_blank()) +
             coord_cartesian(ylim=c(50,90))

产生这个:

【讨论】:

  • 迈克·怀斯,谢谢,谢谢,谢谢。喜欢你的图表。
  • 不幸的是,现在我得到:错误:ggplot2 不知道如何处理类函数的数据。
  • 因为名字data。如果您的数据框未定义(并使用名称data),ggplot 将使用来自utils 包的data() 函数。 R 没有类型检查。 R 中许多难以理解的错误消息来自与同名函数的冲突。
  • 再次感谢迈克。关于 R 有很多事情要了解。
  • 不幸的是,很难避免这些冲突,因为所有好名字都已经被基本的 R 功能用完了。 df 例如是 F 函数的密度函数。到处都是碰撞...
猜你喜欢
  • 1970-01-01
  • 2022-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多