R:ggplot 设置带有自定义中断的 ylim

标签 r ggplot2

我想自定义绘图 y 轴上的间隙(中断)。我尝试了两种选择。

option1: ylim(0.0,0.6) 
option2: scale_y_continuous(breaks=seq(0.0, 0.6, 0.1))

option1 的问题是它每隔 0.2 就会中断,直到 y 轴的限制为 0.6。
Example of problem1
选项 2 的问题在于,由于它扩大了图的 0.1 段,因此它给人一种图之间存在巨大差异的错觉。
Example of problem2

我想要的是 y 轴在每 0.1 处中断或将其自定义为任何中断,同时显示 y 轴的最大限制(在这种情况下为 0.0 到 0.6,但每 0.1 中断一次)。
xVal = c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)
a = c(0.18340368127959822, 0.17496531617798133, 0.16772886654445848, 0.15934821062512169, 0.15390913489444036, 0.14578798884106348, 0.14524174121702108, 0.13958093302847951, 0.1365009715515553, 0.13337340345559975, 0.12995175856952607, 0.12583603207983862, 0.12180656145228715, 0.11824179486798418, 0.11524630600365712)
b = c(0.13544353787855531, 0.11345498050033079, 0.11449834060237293, 0.10479213576778054, 0.09677430524414686, 0.091990671548439179, 0.089965934807318487, 0.088711600335474206, 0.088923403079789909, 0.087989321310275717, 0.085424600757017272, 0.08251334730889931, 0.080178280060313953, 0.077717041621392688, 0.076638743116633837)
c = c(0.087351324973658093, 0.12113308515702567, 0.11422800742900453, 0.11264309199970789, 0.11390287790920843, 0.10774426268894192, 0.10587704437111881, 0.10474954948318291, 0.10568277685778472, 0.10201545270338952, 0.09939827283775747, 0.098062403381144761, 0.094110034623398231, 0.091211408116407641, 0.089369778116029489)

library(ggplot2)
library(reshape2)

df = data.frame(xVal, a, b, c)
df.melt = melt(df, id="xVal")

问题1:
ggplot(data=df.melt, aes(x=xVal, y=value, colour=variable)) +
            geom_point() + 
            geom_line() + 
            xlab("xVal") + ylab("YValues") + xlim(1,16) +  
            ylim(0.0,0.6)

问题2:
ggplot(data=df.melt, aes(x=xVal, y=value, colour=variable)) + 
            geom_point() + 
            geom_line() + 
            xlab("xVal") + ylab("YValues") + xlim(1,16) + 
            scale_y_continuous(breaks=seq(0.0, 0.6, 0.1))

如何自定义 y 轴,以便根据我指定的值中断。

最佳答案

见下文。您需要设置中断和限制。否则,您可能不喜欢所选的休息时间,或者它可能会放大数据而不会显示您的某些休息时间。

library(ggplot2)
library(reshape2)

xVal = c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)
a = c(0.18340368127959822, 0.17496531617798133, 0.16772886654445848, 0.15934821062512169, 0.15390913489444036, 0.14578798884106348, 0.14524174121702108, 0.13958093302847951, 0.1365009715515553, 0.13337340345559975, 0.12995175856952607, 0.12583603207983862, 0.12180656145228715, 0.11824179486798418, 0.11524630600365712)
b = c(0.13544353787855531, 0.11345498050033079, 0.11449834060237293, 0.10479213576778054, 0.09677430524414686, 0.091990671548439179, 0.089965934807318487, 0.088711600335474206, 0.088923403079789909, 0.087989321310275717, 0.085424600757017272, 0.08251334730889931, 0.080178280060313953, 0.077717041621392688, 0.076638743116633837)
c = c(0.087351324973658093, 0.12113308515702567, 0.11422800742900453, 0.11264309199970789, 0.11390287790920843, 0.10774426268894192, 0.10587704437111881, 0.10474954948318291, 0.10568277685778472, 0.10201545270338952, 0.09939827283775747, 0.098062403381144761, 0.094110034623398231, 0.091211408116407641, 0.089369778116029489)

df = data.frame(xVal, a, b, c)
df.melt = melt(df, id="xVal")

ggplot(data=df.melt,
  aes(x=xVal, y=value, colour=variable)) + geom_point() +
  geom_line() + xlab("xVal") + ylab("YValues") + xlim(1,16) + scale_y_continuous(breaks=seq(0.0, 0.6, 0.1), limits=c(0, 0.6))

关于R:ggplot 设置带有自定义中断的 ylim,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30460756/

相关文章:

r - 通过在 R 中有效地连接 2 个向量的对对应元素来制作向量列表

r - 疯狂地尝试编写一个对数据框的一列进行操作的简单函数

R 从列表中删除子列表中的项目

r - R中的autoplot函数和plot函数有什么区别

r - 为什么同样的 ggplot 可以直接运行,但在 Shiny 中却失败?

使用ggplot减少r中X轴上的日期比例

r - R中的半色箱线图

sql-server - dbHasCompleted 始终返回 TRUE

r - Rmarkdown 中同一行的 Kableextra 表和 ggplot 图(PDF - 不是 Flexdashboard)

r - 如何将城市点映射到美国 map 并移动坐标以留出区域之间的空间?