相关疑难解决方法(0)

限制ggplot2轴而不删除数据(外部限制):缩放

如果在ggplot中指定轴限制,则删除外围点.这适用于点,但您可能希望绘制与指定范围相交的线,但ggplot rangexlim/ylim方法会删除这些.是否有另一种方法来指定绘图轴范围而不删除外围数据?

例如

require(ggplot2)
d = data.frame(x=c(1,4,7,2,9,7), y=c(2,5,4,10,5,3), grp=c('a','a','b','b','c','c'))
ggplot(d, aes(x, y, group=grp)) + geom_line()
ggplot(d, aes(x, y, group=grp)) + geom_line() + scale_y_continuous(limits=c(0,7))
ggplot(d, aes(x, y, group=grp)) + geom_line() + ylim(0,7)
Run Code Online (Sandbox Code Playgroud)

limits r zoom ggplot2

89
推荐指数
1
解决办法
5万
查看次数

双向密度图与单向密度图结合,r中选定区域

# data 
set.seed (123)
xvar <- c(rnorm (1000, 50, 30), rnorm (1000, 40, 10), rnorm (1000, 70, 10))
yvar <-   xvar + rnorm (length (xvar), 0, 20)
myd <- data.frame (xvar, yvar)


# density plot for xvar
            upperp = 80   # upper cutoff
            lowerp = 30   # lower cutoff
            x <- myd$xvar
            plot(density(x))
            dens <- density(x)
            x11 <- min(which(dens$x <= lowerp))
            x12 <- max(which(dens$x <= lowerp))
            x21 <- min(which(dens$x > upperp))
            x22 <- max(which(dens$x > upperp))
            with(dens, polygon(x = c(x[c(x11, …
Run Code Online (Sandbox Code Playgroud)

r graph ggplot2 kernel-density

28
推荐指数
3
解决办法
5719
查看次数

如何为 ggplot2 中带有小平面的轴设置一个限制?

这个问题与这个问题类似:How to set limit foraxes in ggplot2 Rplots? ,不同之处在于我只想限制一侧(例如仅绘制 x>0 而不是 -5000 < x < 5000 )并使用facets.

请注意,我想知道这两种简单情况的解决方案:

  1. scale_x_continuous(limits = c(-5000, 5000))(与 相同xlim(-5000, 5000)) - 它完全不考虑点(例如,它们不会用于geom_smooth())

  2. coord_cartesian(xlim = c(-5000, 5000))函数 - 它只是不绘制它们(但仍然用于 geom_smooth())

当您使用facet_wrap(~veg, scales = "free_x)并且不知道每个方面的 x 上限是多少时,这种情况经常发生,但您知道它们总是积极的。

r ggplot2

6
推荐指数
1
解决办法
2102
查看次数

用ggplot绘制y = mx + c

基本问题,ggplot似乎没有做我期望的事情.

ggplot(data=data.frame( x=c(-1,2),y=c(-1,2) ), aes(x=x,y=y)) + 
  geom_blank() + 
  geom_abline(slope = -1 , intercept = 1)
Run Code Online (Sandbox Code Playgroud)

我期待这个情节:

在此输入图像描述

它正在密谋:

在此输入图像描述

r ggplot2

5
推荐指数
1
解决办法
787
查看次数

限制ggplot中的X和Y轴范围?

在进行传统绘图时,我可以使用xlim和ylim来显示我想要绘制的范围.

我怎样才能在ggplot中实现这一目标?

编辑:我绘制的数据集示例:

real <- read.table("http://pelinfamily.ca/bio/GDR-18_conc.ld", header=F)
dd <- data.frame(Distance=real[,2]-real[,1], r.2=real[,13])

ggplot(dd, aes(x=Distance, y=r.2)) +
   stat_summary(fun.data="mean_sdl", mult=1, geom="ribbon", alpha=.4) + 
   stat_summary(fun.data="mean_sdl", mult=1, geom="line")
Run Code Online (Sandbox Code Playgroud)

r ggplot2

2
推荐指数
2
解决办法
1万
查看次数

如何在ggplot2 R图中精确设置轴的极限?

用ggplot制作一个情节,我希望准确设置我的轴.我知道我可以设置绘图范围(例如,对于x轴我指定的限制从2到4),coord_cartesian()但是在我指定的范围的左侧和右侧留下一点空间:

在此输入图像描述

以上MWE的代码:

library(ggplot2)

data.mwe = cbind.data.frame(x = 1:5, y = 2:6)

plot.mwe = ggplot(data = data.mwe, aes(x=x,y=y)) + geom_line() + coord_cartesian(xlim = c(2,4))
print(plot.mwe)
Run Code Online (Sandbox Code Playgroud)

我想要的结果是一个图表,其中显示的区域正好在我指定的限制之间.

我知道 如何在ggplot2 R图中设置轴的限制? 但它没有回答我的问题,因为它产生了上面不希望的结果,或者削减了观察结果(带有limits参数scale_x_continuous).我知道我可以修改设置较小的限制范围,但我正在寻找一个干净的结果.至少我想知道实际范围与我指定的范围有多大,以便我可以相应地调整我的限制.

plot r ggplot2

2
推荐指数
1
解决办法
156
查看次数

在POSIXct时间上绘制时,使用ggplot设置x轴的最小值和最大值

我正在尝试绘制随时间变化的值并出现错误:

Error: Invalid input: date_trans works with objects of class Date only
Run Code Online (Sandbox Code Playgroud)

我在这篇文章以及这里的文章中解决了早期的问题。我想设置x轴的最小值和最大值,以删除没有数据的图的最末端的空白。

该代码称为绘图,但没有校正的x轴。

ggplot(dta, aes(x= WeekStarting, y = AvgWeekEle, group = IndID))+
        geom_line(size = 1)+ 
        theme(axis.text.x=element_text(angle=30, hjust=1))
Run Code Online (Sandbox Code Playgroud)

我尝试使用scale_x_date下面的代码来设置x轴的限制-这会产生错误。

ggplot(dta, aes(x= WeekStarting, y = AvgWeekEle, group = IndID))+
        geom_line(size = 1)+ 
        theme(axis.text.x=element_text(angle=30, hjust=1))+
        scale_x_date(breaks = "1 week", labels=date_format("%b-%d-%Y"), 
            limits = as.Date(c("2014-01-6","2014-02-15")))
Run Code Online (Sandbox Code Playgroud)

一个dput()我的数据如下。我正在使用最新版本的R,并且正在运行Windows 7。

提前致谢。

dta <- structure(list(IndID = c("BHS_011_A", "BHS_011_A", "BHS_011_A", 
"BHS_011_A", "BHS_011_A", "BHS_011_A", "BHS_011_A", "BHS_011_A", 
"BHS_015_A", "BHS_015_A", "BHS_015_A", "BHS_015_A", "BHS_015_A", 
"BHS_015_A", …
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2

1
推荐指数
1
解决办法
1864
查看次数

ggplot stat_summary 轴受限时

使用 stat_summary 将均值和 ci 与箱线图一起绘制到图上

p1 <- ggplot(data=df, aes(x=group, y=metric ) ) +
  geom_boxplot(outlier.shape = NA, fill = fill, color=line, alpha = 0.5) +
  stat_summary(fun.data=mean_cl_normal, aes(color = "Mean and CI"))
Run Code Online (Sandbox Code Playgroud)

除此之外,我还要求限制 y 轴以避免显示超出范围的值。这是通过

p1 <- p1 + scale_y_continuous(limits =c(lower.limit,upper.limit) )
Run Code Online (Sandbox Code Playgroud)

但是,观察到应用限制时,图中所示的平均值与未应用限制的情况不同。这是预期的工作方式吗?似乎 stat_summary 只包括通过应用的限制内的点scale_y_continuous

stat_summary即使应用了轴限制,有没有一种方法可以使用包括图中限制之外的点来获得均值和 ci ?

r ggplot2

1
推荐指数
1
解决办法
1208
查看次数

ggplot精确轴范围

如何将轴范围设置为与指定完全相同?

对于以下示例,我希望 x 轴在 0% 处交叉(而不是如图所示的 -0.5%),并且我希望顶部值为 12%(而不是 12.5%)

我都尝试过:

scale_x_continuous(limits = c(0, 0.12))
Run Code Online (Sandbox Code Playgroud)

coord_cartesian(ylim = c(0, 0.12)) 
Run Code Online (Sandbox Code Playgroud)

按照:

如何在 ggplot2 R 图中设置轴限制?

我可以精确限制 ggplot 轴范围吗?

示例代码:

myData = data.frame(x = c(0, 1, 2, 3, 4, 5),
                  y = c(0.05,0.06, 0.07, 0.08, 0.09, 0.09))


ggplot() +
  geom_step(data=myData, aes(x=x, y=y), color='orange', size=1) +
  xlab('') +
  ylab('') +
  scale_y_continuous(labels = scales::percent, limits=c(0,0.12))


ggplot() +
  geom_step(data=myData, aes(x=x, y=y), color='blue', size=1) +
  xlab('') +
  ylab('') +
  scale_y_continuous(labels = scales::percent) + 
  coord_cartesian(ylim = c(0,0.12)) …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

0
推荐指数
1
解决办法
3148
查看次数

标签 统计

ggplot2 ×9

r ×9

plot ×2

graph ×1

kernel-density ×1

limits ×1

zoom ×1