标签: ggally

绘制相关系数时GGally :: ggpairs绘图没有网格线

GGally::ggpairs绘制好像下面的图表.我唯一想要进一步完善它的是删除绘图上部的所有网格线,其中是相关系数.也许还可以在每个上图周围绘制矩形.

library("GGally")
data(iris)
ggpairs(iris[, 1:4], lower=list(continuous="smooth", params=c(colour="blue")),
  diag=list(continuous="bar", params=c(colour="blue")), 
  upper=list(params=list(corSize=6)), axisLabels='show')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r ggplot2 ggally

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

在ggpairs中操纵轴标题(GGally)

我正在使用下面的代码生成以下图表.

# Setup
data(airquality)

# Device start
png(filename = "example.png", units = "cm", width = 20, height = 14, res = 300)

# Define chart
pairs.chrt <- ggpairs(airquality,
                      lower = list(continuous = "smooth"),
                      diag = list(continuous = "blank"),
                      upper = list(continuous = "blank")) +
  theme(legend.position = "none",
        panel.grid.major = element_blank(),
        axis.ticks = element_blank(),
        axis.title.x = element_text(angle = 180, vjust = 1, color = "black"),
        panel.border = element_rect(fill = NA))

# Device off and print
print(pairs.chrt)
dev.off()
Run Code Online (Sandbox Code Playgroud)

ggpairs  - 第一个例子

我目前正在尝试修改轴标题的显示.特别是,我希望轴标题是:

  1. 放置在距离轴标签更远的位置 …

r scatter-plot ggally r-corrplot

15
推荐指数
2
解决办法
9963
查看次数

如何使用wrap函数在GGally :: ggpairs中使用loess方法

我试图复制Coursera R回归模型课程中给出的这个简单示例:

require(datasets)
data(swiss)
require(GGally)
require(ggplot2)
ggpairs(swiss, lower = list(continuous = "smooth", params = c(method = "loess")))
Run Code Online (Sandbox Code Playgroud)

我希望看到一个6x6对图 - 一个散点图,黄土更平滑,瑞士数据中6个变量的每个组合的置信区间.

但是,我收到以下错误:

display_param_error()中的错误:'params'是不推荐使用的参数.请'包装'函数以提供参数.help("wrap",package ="GGally")

我通过看ggpairs()wrap()帮助文件,并尝试很多的排列wrap()wrap_fn_with_param_arg()功能.

我可以按预期工作:

ggpairs(swiss, lower = list(continuous = wrap("smooth")))
Run Code Online (Sandbox Code Playgroud)

但是一旦我添加了黄土部分,它就不会:

ggpairs(swiss, lower = list(continuous = wrap("smooth"), method = wrap("loess")))
Run Code Online (Sandbox Code Playgroud)

当我尝试上面这一行时,我收到此错误.

值[3L]出错:以下ggpair绘图函数随时可用:连续:c('points','smooth','density','cor','blank')组合:c('box','dot ','facethist','facetdensity','denstrip','blank')离散:c('ratio','facetbar','blank')na:c('na','blank')

diag continuous:c('densityDiag','barDiag','blankDiag')diag离散:c('barDiag','blankDiag')diag na:c('naDiag','blankDiag')

您还可以提供您自己的函数,该函数遵循函数的api(数据,映射,...){...并返回一个ggplot2绘图对象Ex:my_fn < - function(data,mapping,...){p < - ggplot(data = data,mapping = mapping)+ geom_point(...)p} ggpairs(data,lower = list(continuous = my_fn))

提供的功能:黄土

显然我在错误的地方进入黄土.任何人都可以帮我理解如何添加黄土部分?

请注意,我的问题与问题不同,因为我问如何在ggpairs中实现黄土,因为params参数已被弃用.

非常感谢.

r ggplot2 loess ggally

15
推荐指数
2
解决办法
7063
查看次数

使用ggpairs创建此图

我在Shiny应用程序中有一些代码,可以生成下面的第一个图表.如您所见,字体大小随相关系数的大小而变化.我想用ggpairs(GGally)或ggplot2生成类似的东西.下面的第二张图片是使用以下代码生成的:

library(GGally)
ggpairs(df, 
  upper = list(params = c(size = 10)),
  lower = list(continuous = "smooth", params = c(method = "loess", fill = "blue"))
)
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,相关字体的大小可以使用大小进行调整,但是当我设置大小向量时,只使用第一个值.我还想删除'Corr:'并添加一个重要指标.使用颜色作为相关系数的符号也很不错.在较低的,methodfill没有链接smooth.关于如何让第二个绘图捕获第一个更多功能的任何建议都会很棒.

Anscombe的数据:

df <- structure(list(y1 = c(8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 
4.26, 10.84, 4.82, 5.68), x1 = c(10L, 8L, 13L, 9L, 11L, 14L, 
6L, 4L, 12L, 7L, 5L), y2 = c(9.14, 8.14, 8.74, 8.77, 9.26, 8.1, 
6.13, 3.1, 9.13, 7.26, 4.74), x2 = c(10L, 8L, 13L, 9L, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 correlation ggally

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

设置alpha并删除ggpairs中密度图的黑色轮廓

考虑这个例子:

data(tips, package = "reshape")
library(GGally)
pm <- ggpairs(tips, mapping = aes(color = sex), columns = c("total_bill", "time", "tip"))
pm
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如何使密度图更透明并去除黑线?

这些GGally软件包最近似乎发生了很大的变化,我找不到一个有效的解决方案

更新

我找到了如何使用自定义函数更改alpha:

my_dens <- function(data, mapping, ..., low = "#132B43", high = "#56B1F7") {
  ggplot(data = data, mapping=mapping) +
    geom_density(..., alpha=0.7) 
}

pm <- ggpairs(tips, mapping = aes(color = sex), columns = c("total_bill", "time", "tip"),
              diag=list(continuous=my_dens))
pm
Run Code Online (Sandbox Code Playgroud)

但黑线仍然存在.

r ggplot2 ggally

12
推荐指数
2
解决办法
4948
查看次数

如何将外部图例添加到ggpairs()?

我正在使用绘制散点图矩阵ggpairs.我使用以下代码:

# Load required packages
require(GGally)

# Load datasets
data(state)
df <- data.frame(state.x77,
                 State = state.name,
                 Abbrev = state.abb,
                 Region = state.region,
                 Division = state.division
) 
# Create scatterplot matrix
p <- ggpairs(df, 
             # Columns to include in the matrix
             columns = c(3,5,6,7),

             # What to include above diagonal
             # list(continuous = "points") to mirror
             # "blank" to turn off
             upper = "blank",
             legends=T,

             # What to include below diagonal
             lower = list(continuous = "points"),

             # What to …
Run Code Online (Sandbox Code Playgroud)

plot r ggally

11
推荐指数
2
解决办法
3896
查看次数

在R中的映射函数中添加列表对象

我正在创建一个散点图矩阵GGally::ggpairs.我正在使用自定义函数(下面称为my_fn)来创建左下角的非对角线子图.在调用该自定义函数的过程中,有关于计算的每个子图的信息,以及我想要存储以供日后使用的子图.

在下面的示例中,每个h@cID都是具有100个值的int []结构.总共,它在my_fn中创建了10次(对于10个左下角的非对角线子图中的每一个,都会创建一次).我试图将所有这10个h@cID结构存储到listCID列表对象中.

我没有成功使用这种方法,并且我尝试了一些其他变体(例如尝试将listCID输入参数作为输入参数my_fn,或者最终尝试返回它).

我可以h@cID有效地存储十个结构,my_fn以便以后使用吗?我觉得有几个我不完全熟悉的语法问题可以解释为什么我被卡住了,同样如果我没有使用适当的术语,我也很乐意改变这个问题的标题.谢谢!

library(hexbin)
library(GGally)
library(ggplot2)

set.seed(1)

bindata <- data.frame(
    ID = paste0("ID", 1:100), 
    A = rnorm(100), B = rnorm(100), C = rnorm(100), 
    D = rnorm(100), E = rnorm(100))
    bindata$ID <- as.character(bindata$ID
)

maxVal <- max(abs(bindata[ ,2:6]))
maxRange <- c(-1 * maxVal, maxVal)

listCID <- c()

my_fn <- function(data, mapping, ...){
  x <- data[ ,c(as.character(mapping$x))]
  y <- data[ ,c(as.character(mapping$y))]
  h …
Run Code Online (Sandbox Code Playgroud)

r data-visualization ggplot2 ggally

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

GGally - ggpairs的意外行为(...,diag = list(continuous ='density'))

我试图在对角线中生成一个带有密度图的散点图矩阵(最好使用ggplot).ggpairsGGally包中的文档说明:

diag是一个列表,可能只包含变量'continuous'和'discrete'.diag列表的每个元素都是一个实现以下选项的字符串:continuous =恰好其中一个('density','bar','blank'); discrete =恰好其中一个('bar','blank').

这表明(??)这应该可以使用diag=list(continuous="density").

但是以下代码:

xx <- mtcars[,c(1,3,4,6)]   ## extract mpg, disp, hp, and wt from mtcars
library(GGally)
ggpairs(xx,diag=list(continuous="density"))
Run Code Online (Sandbox Code Playgroud)

给出这个:

我究竟做错了什么?

注意:尝试做同样的事情plotmatrix(xx)给出了这个:

这是因为密度图显然是使用基于完整数据集(xx)的范围在每个对角线面上缩放,而不是基于xx适当面的子集的范围.结果,第二行(disp)看起来很好,因为disp具有最大范围,但是第1行和第4行是嘎吱嘎吱的.

r ggplot2 ggally

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

如何使用ggpairs()在不同方面设置相同的比例

我有以下数据集和代码来构建数据框中每对变量的2d密度等值线图.我的问题是ggpairs()中是否有一种方法可以确保不同变量对的比例相同,例如ggplot2中不同构面的相同比例.例如,我希望每个图片的x比例和y比例都来自[-1,1].

提前致谢!

情节看起来像 在此输入图像描述

library(GGally)
ggpairs(df,upper = list(continuous = "density"),
     lower = list(combo = "facetdensity"))

#the dataset looks like 
print(df)
         x           y           z             w
1   0.49916998 -0.07439680  0.37731097  0.0927331640
2   0.25281542 -1.35130718  1.02680343  0.8462638556
3   0.50950876 -0.22157249 -0.71134553 -0.6137126948
4   0.28740609 -0.17460743 -0.62504812 -0.7658094835
5   0.28220492 -0.47080289 -0.33799637 -0.7032576540
6  -0.06108038 -0.49756810  0.49099505  0.5606988283
7   0.29427440 -1.14998030  0.89409384  0.5656682378
8  -0.37378096 -1.37798177  1.22424964  1.0976507702
9   0.24306941 -0.41519951  0.17502049 -0.1261603208
10  0.45686871 -0.08291032  0.75929106  0.7457002259
11 -0.16567173 -1.16855088  0.59439600  0.6410396945
12  0.22274809 …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 ggally

10
推荐指数
2
解决办法
1790
查看次数

dplyr掩盖GGally并打破ggparcoord

给定一个新的会话,执行函数文档中提供的小ggparcoord(.)示例

library(GGally)

data(diamonds, package="ggplot2")
diamonds.samp <- diamonds[sample(1:dim(diamonds)[1], 100), ]
ggparcoord(data = diamonds.samp, columns = c(1, 5:10))
Run Code Online (Sandbox Code Playgroud)

结果如下:

在此输入图像描述

再次,从一个新的会话开始并使用加载的dplyr执行相同的脚本

library(GGally)
library(dplyr)

data(diamonds, package="ggplot2")
diamonds.samp <- diamonds[sample(1:dim(diamonds)[1], 100), ]
ggparcoord(data = diamonds.samp, columns = c(1, 5:10))
Run Code Online (Sandbox Code Playgroud)

结果是:

错误:(列表)对象无法强制输入'double'

需要注意的是顺序库()语句也没有关系.

问题

  1. 代码示例有问题吗?
  2. 有没有办法克服这个问题(通过一些命名空间函数)?
  3. 或者这是一个错误?

我需要更大的分析中的dplyrggparcoord(.),但这个最小的例子反映了我面临的问题.

版本

  • R @ 3.2.3
  • dplyr @ 0.4.3
  • GGally @ 1.0.1
  • ggplot @ 2.0.0

UPDATE

将Joran给出的优秀答案包括起来:

答案

  1. 代码示例实际上是错误的,因为ggparcoord(.)期望data.frame不是钻石数据集给出的tbl_df(如果加载了dplyr).
  2. 问题是由强迫的解决tbl_df到 …

r ggplot2 dplyr parallel-coordinates ggally

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