小编fst*_*ens的帖子

已经在for循环中制作的多个ggplot2图的网格

作为一个新的ggplot2用户,我有点失去了可能性,并努力在网上找到一个简单的答案,我认为是一个简单的问题.

我想在同一张纸上显示来自ggplot2的多个图,但是知道这些图来自for循环.

下面的例子没有编译,只是为了说明:

for(i in c(1:n)){                                   
  for(j in c(1:m)){
    ..........  # some data production
    p <- ggplot(df.all) + geom_bar(aes_string(x=class.names[i],fill=var.names[j])
}}
Run Code Online (Sandbox Code Playgroud)

在这里,p被覆盖了,但是我希望有一个矩阵或一个列表,我可以将所有p放在它们生成的位置,然后像一个简单的函数,如

display_in_a_grid(list_of_ggplot_plots)
Run Code Online (Sandbox Code Playgroud)

但据我所知,我无法制作一个绘图矩阵列表,也无法找到只接受一个参数输入的函数.

关于我看过的事情:

包gridExtra中的"arrangeGrob"不起作用,因为它需要每个绘图的显式名称(例如:p1,p2,p3,...),如http://code.google.com/p/gridextra/wiki/ arrangeGrob

ggplot2的"facet"方法不适合我的数据集的组织(或相反:p)

你有一个简单的方法来管理这个吗?

谢谢,

弗朗索瓦

r ggplot2 r-grid

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

忽略ggplot2 boxplot + faceting +"free"选项中的异常值

如何调整我的Y轴以忽略异常值,就像在这篇文章中一样,但是在一个更具挑战性的情况下,我有4个箱图和"自由刻面"布局?

p < - ggplot(molten.DF,aes(x = class,y = SOC,fill = class))+ geom_boxplot()+ facet_grid(layer~.,scales ="free",space ="free")

正如您在我的图中所看到的,考虑Y轴范围内的异常值会使框更难以阅读.如果结果中仍然可以看到一些异常值,那就不重要了,但我想真正关注这些方块!

具有自由尺度的boxplot,所有异常值都是(不幸)可见

r facet outliers ggplot2 boxplot

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

如何在数学表达式中添加星号?

我试图用R²值和重要性编码来注释一个图,但我不能*作为符号而不是作为并置运算符传递.

我试过了?plot.math,这是我尝试过的

plot(1:10,1:10)
text(6,4,expression(R^2==8))
text(6,4,expression(R^2==8^{**}))
Error: unexpected '^' in "text(6,4,expression(R^2==8^{**"
Run Code Online (Sandbox Code Playgroud)

plot symbols r annotate

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

在ggplot2中使用geom_ribbon反转X轴和Y轴

是否可以使用包ggplot2中的geom_ribbon,但是范围是水平绘制而不是垂直绘制.如果"geom_ribbon"提出选项xmin/xmax,这将是微不足道的,但事实并非如此.

这是我的数据,用于测试的简化绘图功能和我获得的图.所以在这个例子中,我希望垂直显示"深度"轴.

prof <- read.table(text = " depth prop mean error
1 5 FALSE 2.12 0.035
2 15 FALSE 2.06 0.035
3 25 FALSE 1.54 0.035
4 35 FALSE 0.92 0.033
5 45 FALSE 0.71 0.028
6 55 FALSE 0.60 0.026
7 65 FALSE 0.54 0.024
8 75 FALSE 0.49 0.023
9 85 FALSE 0.46 0.022
10 95 FALSE 0.43 0.022
11 105 FALSE 0.41 0.022
12 115 FALSE 0.39 0.021
13 5 TRUE 2.18 0.061
14 15 TRUE 2.11 …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

使用ggplot在图例中包含所有图层

如何制作代表我的图表中绘制的所有曲线的图例?目前,为第一层生成自动图例(基于"颜色"美学),而在该图例中未包含另一层(表示所有观察中"价格"变量密度的黑色曲线).

我认为我的问题肯定来自于对ggplot包的概念的不完全理解.

ggplot(diamonds) + 
  geom_density(aes(x = price, y = ..density.., colour = cut)) +
  geom_density(aes(x = price,y = ..density..))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r legend ggplot2

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

使用do.call和raster包对未确定数量的栅格求和

在土壤测绘的框架中,我需要总结不确定数量的栅格.我尝试使用'raster'包和'do.call'函数来完成它.但是,如果'sum'函数可以总计多个栅格,则使用do.call执行相同的操作会导致错误.我究竟做错了什么 ?

library(raster)

r1 <- raster(ncol=10, nrow=10)   # dataset for test
values(r1) <- runif(ncell(r1))
r2 <- raster(ncol=10, nrow=10)
values(r2) <- runif(ncell(r2))
r3 <- raster(ncol=10, nrow=10)
values(r3) <- runif(ncell(r3))

sum(r1,r2,r3)    # works nice

do.call(sum,list(r1,r2,r3))

##Erreur dans as.character(sys.call()[[1L]]) : 
##cannot coerce type 'builtin' to vector of type 'character'
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助,

弗朗索瓦

r raster

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

R基础图形的默认文本大小是多少?

我必须写一份文件,说明书非常严格.所有数字(轴标签,刻度标签,图例)内的文字大小必须为7pt.由于某些原因,我使用基本图形包,不能使用额外的包,如ggplot2.在"graphics"(?par)的选项中,我只看到此cex参数和派生词允许对于默认大小修复文本大小.

R graphics的默认字体大小是多少?

size graphics fonts r

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

get list of colors used in a ggplot2 plot?

Possible Duplicate:
How to extract the fill colours from a ggplot object?

In an arbitrary ggplot plot, say

p <- ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group)) + geom_boxplot()
Run Code Online (Sandbox Code Playgroud)

有没有办法提取所用颜色的代码(即我们用命令修改的名为"values"的变量

p + scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9")) 
Run Code Online (Sandbox Code Playgroud)

)?

我想获得使用的颜色,以便只修改一个.

谢谢,

弗朗索瓦

r ggplot2

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

如何在ggplot2的轴标签中同时使用上标和变量

我想在n轴标签内一起使用一个变量(这里是矢量元素"type")和一个包含上标(这里是m ^ 2)的单元.

data <- list(houses = data.frame(surface = c(450, 320, 280),
                                 price = c(12, 14, 6)),
            flats = data.frame(surface = c(45, 89, 63),
                               price = c(4, 6, 9))) 
Run Code Online (Sandbox Code Playgroud)

我用表达式实现显示"m ^ 2",

for (type in c('houses', 'flats')){
  p <- ggplot(aes(x = surface, y = price), data = data[[type]]) +      
    geom_point() +
    xlab(expression(paste('surface of this type /', m^{2}))) 
}
p
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在标签中添加变量时,以下内容当然不起作用:

for (type in c('houses', 'flats')){
  p <- ggplot(aes(x = surface, y = price), data = data[[type]]) +      
    geom_point() +
    xlab(expression(paste('surface …
Run Code Online (Sandbox Code Playgroud)

expression r superscript ggplot2

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

每个条形的宽度不同,在 ggplot2 中使用 geom_bar 和“position=fill”

你能告诉我是否可以制作一个条形图,其条形高度归一化为 1,但条形宽度与每个 bin 中的元素数量成正比。

\n\n

示例:这个图

\n\n
ggplot(mtcars, aes(x=factor(cyl), fill=factor(vs))) + geom_bar(position="fill")\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后使 3 个条形的宽度与

\n\n
table(factor(mtcars$cyl))\n
Run Code Online (Sandbox Code Playgroud)\n\n

position_fill() 中有一个“width”参数,但它必须是一个常量,不是吗?

\n\n

谢谢你,

\n\n

弗朗西斯·xc3·xa7ois

\n\n

编辑 :

\n\n

我进一步尝试,并收到消息:“position_fill 需要恒定宽度”

\n\n

所以我想得到我想要得到的东西是不可能的,至少使用 geom_bar 是不可能的。

\n

r bar-chart ggplot2

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

得到R中直方图bin的索引

这是我的问题:

如何找到数字落在的直方图箱的索引?

在Matlab中,解决方案很简单.HISTC完成这项工作:

[counts,bin] = histc(data,edges)
Run Code Online (Sandbox Code Playgroud)

"bin"正是我要找的.

但我在R工作,R的hist功能不提出功能性.我想我可以用一些代码来管理(使用一些东西作为min<),但是因为我需要为很多数字做这些,我想找到一个更优雅的解决方案.

由于我对R不是很有经验,我希望可能存在一个棘手的解决方案,以另一种方式解决问题.

r bin

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