标签: ggproto

ggmap错误:GeomRasterAnn是使用不兼容的ggproto版本构建的

我正在使用ggmap,并得到以下错误:

Error: GeomRasterAnn was built with an incompatible version of ggproto.
Please reinstall the package that provides this extension.
Run Code Online (Sandbox Code Playgroud)

我已经安装了ggmap(2.6.1)和ggplot2(2.2.0)的最新版本,但仍然遇到了同样的错误.

r ggplot2 ggmap ggproto

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

ggplot2中的qqnorm和qqline

假设有一个线性模型LM,我想要一个残差的qq图.通常我会使用R基础图形:

qqnorm(residuals(LM), ylab="Residuals")
qqline(residuals(LM))
Run Code Online (Sandbox Code Playgroud)

我可以弄清楚如何获得情节的qqnorm部分,但我似乎无法管理qqline:

ggplot(LM, aes(sample=.resid)) +
    stat_qq()
Run Code Online (Sandbox Code Playgroud)

我怀疑我遗漏了一些非常基本的东西,但似乎应该有一种简单的方法来做到这一点.

编辑:非常感谢下面的解决方案.我已经修改了代码(非常轻微)以从线性模型中提取信息,以便绘图的工作方式类似于R基础图形包中的便利图.

ggQQ <- function(LM) # argument: a linear model
{
    y <- quantile(LM$resid[!is.na(LM$resid)], c(0.25, 0.75))
    x <- qnorm(c(0.25, 0.75))
    slope <- diff(y)/diff(x)
    int <- y[1L] - slope * x[1L]
    p <- ggplot(LM, aes(sample=.resid)) +
        stat_qq(alpha = 0.5) +
        geom_abline(slope = slope, intercept = int, color="blue")

    return(p)
}
Run Code Online (Sandbox Code Playgroud)

r ggplot2 ggproto

52
推荐指数
6
解决办法
4万
查看次数

如何在ggplot中使用图像作为一个点?

有没有办法在ggplot2的散点图中使用特定的小图像作为点.理想情况下,我会想要根据变量调整图像大小.

这是一个例子:

library(ggplot2)
p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point(aes(size = qsec, shape = factor(cyl)))
Run Code Online (Sandbox Code Playgroud)

所以我基本上想知道是否有办法提供特定图像作为形状?

r ggplot2 ggproto

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

用ggplot2分割小提琴情节

我想用ggplot创建一个分裂小提琴密度图,就像seaborn文档的这个页面上的第四个例子一样.

这是一些数据:

set.seed(20160229)

my_data = data.frame(
    y=c(rnorm(1000), rnorm(1000, 0.5), rnorm(1000, 1), rnorm(1000, 1.5)),
    x=c(rep('a', 2000), rep('b', 2000)),
    m=c(rep('i', 1000), rep('j', 2000), rep('i', 1000))
)
Run Code Online (Sandbox Code Playgroud)

我可以像这样绘制躲闪的小提琴:

library('ggplot2')

ggplot(my_data, aes(x, y, fill=m)) +
  geom_violin()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是在视觉上比较并排分布中不同点的宽度很难.我无法在ggplot中找到任何拆分小提琴的例子 - 这可能吗?

我找到了一个基本的R图形解决方案,但功能很长,我想突出显示分布模式,这些模式很容易在ggplot中作为附加层添加,但如果我需要弄清楚如何编辑该功能将更难.

r ggplot2 violin-plot ggproto

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

在geom_boxplot中更改whisker定义

我试图使用GGPLOT2/geom_boxplot以产生其中晶须被定义为在5位和第95百分位,而不是0.25的箱线图 - 1.5 IQR/0.75 + IQR并从这些新的晶须离群值被绘制如常.我可以看到geom_boxplot美学包括ymax/ymin,但我不清楚如何将值放在这里.这好像是:

stat_quantile(quantiles = c(0.05, 0.25, 0.5, 0.75, 0.95))
Run Code Online (Sandbox Code Playgroud)

应该能够提供帮助,但我不知道如何将此stat的结果与设置相应的geom_boxplot()美学联系起来:

geom_boxplot(aes(ymin, lower, middle, upper, ymax))
Run Code Online (Sandbox Code Playgroud)

我已经看过其他帖子,其中人们提到基本上手动构建一个类似boxplot的对象,但我宁愿保持整个boxplot格式塔完整,只是修改两个正在绘制的变量的含义.

statistics r ggplot2 boxplot ggproto

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

将自定义图像显示为geom_point

是否可以在R ggplot中将自定义图像(例如png格式)显示为geom_point?

library(png)
pic1 <- readPNG("pic1.png")

png("Heatmap.png", units="px", width=3200, height=3200, res=300)
ggplot(data_frame, aes(medium, day, fill = Transactions))  +
   geom_tile(colour="white")  +
   facet_grid(dime3_year~dime3_month) + 
   scale_fill_gradient(high="blue",low="white") +
   theme_bw() + 
   geom_point(aes(dime3_channel, day, size=Conv,alpha=Conv,image=(annotation_raster(pic1,xmin=0,ymin=0,xmax=5,ymax=5)),color="firebrick")) +
Run Code Online (Sandbox Code Playgroud)

给出错误:

不知道如何自动选择proto/environment类型的对象的比例.默认为连续错误:美学必须是长度为1或与dataProblems相同的长度:( annotation_raster(conv_pic,xmin = 0,ymin = 0,xmax = 5,ymax = 5))

r ggplot2 ggproto

20
推荐指数
3
解决办法
9902
查看次数

geom_step的空心直方图或分级

我想绘制一个空心直方图,其中没有绘制垂直条,但只是一个轮廓.我找不到任何方法来做到这一点geom_histogram.在geom_step+ stat_bin组合看起来像它可能做的工作.但是,根据步骤的参数值,geom_step+ 的区间stat_bin向右或向左移动半个区间direction=.似乎正在做它的"步骤"WRT bin中心.有没有办法改变这种行为,所以它会在bin边缘做"步骤"?

这是一个例子:

d <- data.frame(x=rnorm(1000))
qplot(x, data=d, geom="histogram",
      breaks=seq(-4,4,by=.5), color=I("red"), fill = I("transparent")) +
geom_step(stat="bin", breaks=seq(-4,4,by=.5), color="black", direction="vh")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r ggplot2 ggproto

17
推荐指数
4
解决办法
2132
查看次数

检测 ggplot 对象转换的应用顺序

这些对象打印相同,但对象本身不同。

library(ggplot2)
p1 <- ggplot(cars, aes(speed, dist)) + xlim(1, 2) + geom_point() + geom_line()
p2 <- ggplot(cars, aes(speed, dist)) + geom_point() + xlim(1, 2) + geom_line()
p3 <- ggplot(cars, aes(speed, dist)) + geom_point() + geom_line() + xlim(1, 2)
length(waldo::compare(p1, p2))
#> [1] 229
length(waldo::compare(p1, p3))
#> [1] 190
Run Code Online (Sandbox Code Playgroud)

我想从 ggplot 对象本身了解应用转换的顺序。

我们可以使用 等访问图层、比例等p1$layers,并且我们可以按转换类型的p1$scales应用顺序找到它们,但我需要知道整体顺序。

$layers上面的图中的 elements 是等效的(可以使用 检查waldo::compare(p1$layers, p2$layers),$scales但是,由于作为属性、功能外壳或其他环境的元素找到的环境, element 有所不同。这是我陷入困境的部分。

一般性的答案是最好的,但“90% 的时间”都有效的答案也将受到赞赏。一般问题不仅与比例和图层有关,还应包括其他转换(坐标、位置、主题),只要它们相对于其他类型的对象的位置会改变输出。

给定示例的输出可能如下所示:

# 1st scale than 1st layer then …
Run Code Online (Sandbox Code Playgroud)

inheritance r ggplot2 ggproto

17
推荐指数
2
解决办法
471
查看次数

定义因子时发出警告:不推荐使用因子中的重复级别

我在R中的雷达图表有点麻烦.即使情节很好,我也收到以下警告:

> source('~/.active-rstudio-document')
Warning message:
In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels,  :
  duplicated levels in factors are deprecated
> radar
Warning messages:
1: In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels,  :
  duplicated levels in factors are deprecated
2: In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels,  :
  duplicated levels in factors are deprecated
Run Code Online (Sandbox Code Playgroud)

我在其他帖子中看到了同样的错误,但我真的不明白如何将答案应用到我的数据集......

这是我的数据集

MSF,C1,2
OCA,C1,6
SIOA,C1,4
CCFF,C1,4
MSF,C2,4
OCA,C2,2
SIOA,C2,6
CCFF,C2,2
MSF,C3,6
OCA,C3,6
SIOA,C3,6
CCFF,C3,6
Run Code Online (Sandbox Code Playgroud)

这是相应雷达图的代码(可能只是我定义我的数据集的第一部分是相关的,但是......这就是我丢失的地方): …

r ggplot2 ggproto

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

如何手动调整刻面尺寸

我有一个多方面的情节,数据非常多样化.所以有些方面只有1个x值,但有些方面有13个x值.我知道有一个参数space='free'可以通过它代表的数据调整每个方面的宽度.

我的问题是,是否有可能手动调整此空间?由于我的一些方面很小,因此无法再读取刻面中的标签.我做了一个可重复的例子来说明我的意思.

df <- data.frame(labelx=rep(c('my long label','short'), c(2,26)),
                 labely=rep(c('a','b'), each=14),
                 x=c(letters[1:2],letters[1:26]),
                 y=LETTERS[6:7],
                 i=rnorm(28))
ggplot(df, aes(x,y,color=i)) +
  geom_point() +
  facet_grid(labely~labelx, scales='free_x', space='free_x')
Run Code Online (Sandbox Code Playgroud)

因此,根据您的屏幕,my long labelfacet会被压缩,您无法再读取标签.

我在互联网上发现了一个似乎完全符合我想做的帖子,但这似乎已经不再适用了ggplot2.该帖子是2010年.

https://kohske.wordpress.com/2010/12/25/adjusting-the-relative-space-of-a-facet-grid/

他建议使用facet_grid(fac1 + fac2 ~ fac3 + fac4, widths = 1:4, heights = 4:1),所以widthsheights手动调整每个面大小.

r facet ggplot2 ggproto

16
推荐指数
4
解决办法
7027
查看次数

标签 统计

ggplot2 ×10

ggproto ×10

r ×10

boxplot ×1

facet ×1

ggmap ×1

inheritance ×1

statistics ×1

violin-plot ×1