小编Z.L*_*Lin的帖子

将图例移到ggplot2中刻面图的空面上

考虑以下情节:

library(ggplot2)

p <- ggplot(diamonds, 
            aes(x = carat, fill = cut)) +
  geom_density(position = "stack") +
  facet_wrap(~ color)
Run Code Online (Sandbox Code Playgroud)

带注释的facet_wrap图

facet_wrap函数将一系列多面板包装nrow成行和ncol列的大致矩形显示.但是,根据数据的不同,实际的面板数量通常只有几个面板nrow * ncol,这会在图中留下一大块浪费的空间.

如果情节包含图例,则情况会恶化,因为现在我们因图例而浪费的空间更多,无论是在右侧(默认图例位置)还是其他三个方向之一.

为了节省空间,我想将图例移到由未填充的构面创建的空间中.

以下作为一种节省空间的措施,但图例固定在绘图区域的一角,可能会在一侧留下大量空间,从而产生不平衡的外观:

p +
  theme(legend.position = c(1, 0),
        legend.justification = c(1, 0))
Run Code Online (Sandbox Code Playgroud)

传说停泊在一个角落

通过手动调整legend.position/ legend.justification值将图例移向空白区域的中心是一个试验和错误的问题,如果有一个多面图可以处理,则难以扩展.

总之,我想要一个方法:

  1. 将切面绘图的图例移动到由于空面创建的空间中.
  2. 结果是一个相当漂亮的情节.
  3. 很容易自动处理许多情节.

对我来说,这是一个反复出现的用例,我决定将其与我的工作解决方案一起发布,以防其他人发现它有用.我还没有看到在Stack Overflow上的其他地方询问/回答这个场景.如果有人,请发表评论,我很乐意回答,或者将其标记为重复,视具体情况而定.

r ggplot2

45
推荐指数
4
解决办法
2086
查看次数

如何处理laravel中的Undefined Offset?

登录后登陆页面时收到此错误:

compile.php第11573行中的ErrorException:未定义的偏移量:0(查看:C:\ xampp\htdocs\campusguru\resources\views\home.blade.php)

我知道这个错误的原因是我传递给视图的空变量.

我已经尝试过了:

if(isset($blog)) { do something }
Run Code Online (Sandbox Code Playgroud)

并在刀片视图中:

{{ $blogs[0]->title or '' }}
Run Code Online (Sandbox Code Playgroud)

无论如何我可以处理这个错误.或者有更好的方法吗?

php undefined offset laravel

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

如何在 rstudio 中使用 stargazer 修复“if (nchar(text.matrix[r, c]) &gt; max.length[real.c]) { : 需要 TRUE/FALSE 的缺失值”中的错误?

我正在尝试使用 Stargazer 在 Rstudio 中打印组合 lm 表,但我不断收到此消息:

if (nchar(text.matrix[r, c]) > max.length[real.c]) { 中的错误:需要 TRUE/FALSE 的缺失值

这是我正在使用的代码:

stargazer(lm_1, lm_2, lm_3, lm_4, 
          dep.var.labels =  c("PolOri_Social_std", "Sexual_Disgust_std"), 
          covariate.labels = c("Gender", "Sexual_Disgust_std"), 
          style = "demography", 
          out = "hierarchical.htm",
          header = F)
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过这个?

r stargazer

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

具有多个群体的R直方图

我有兴趣在R中创建一个直方图,它将包含两个(或更多)群体,这意味着 - 我不希望两个直方图共享相同的图形,而是一个包含两种或更多颜色的条形图.

找到下面的图片 - 这就是我想要完成的.

例

有任何想法吗?

graphics r histogram

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

ggplot2 - annotate - 更改文本注释的背景颜色

我想更改注释文本的背景颜色,使其为绿色并覆盖其背后的任何内容(如下例中的水平线).我怎么做?

ggplot() + 
  geom_hline(yintercept=0) + 
  annotate("text",x=0,y=0,label="Here is a line")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r annotate background-color ggplot2

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

geom_path()拒绝越过coord_polar()中的0/360行

我正在尝试绘制对象随时间变化的角度(比如说是风向标)。我想将其绘制在极坐标系上,并用一条路径连接时间点,以显示角度如何随时间变化。我只是有一个数据框,其中一列是角度(以度为单位)(数字),然后是记录角度的时间步长(整数)。

但是当我运行以下代码时:

ggplot(df, aes(x = angle.from.ref, y = time.step)) +
  coord_polar() + 
  geom_path() + 
  geom_point() +
  scale_x_continuous(limits = c(0, 360), breaks = seq(0, 360, 45))
Run Code Online (Sandbox Code Playgroud)

我得到的东西看起来像这样:

像这样

所创建的路径geom_path()拒绝越过0/360度线。如果359值后跟1值,则该路径将不会创建穿过x = 0/360点的短链接。取而代之的是,路径沿圆弧一直向后弯曲,从另一侧到达x = 1。

我曾希望使用coord_polar()该方法可以解决此问题,但显然不是。有什么办法可以ggplot使值0和360相邻/连续?

r data-visualization ggplot2

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

从头开始创建geom/stat

我不久前刚开始与R合作,我目前正在努力加强我的可视化技能.我想要做的是创建带有平均钻石的箱形图作为顶层(参见下面链接中的图片).我没有找到任何已经完成此功能的功能,所以我想我必须自己创建它.

链接:Boxplot和平均钻石

我希望做的是创建一个geom或stat,允许这样的东西工作:

ggplot(data, aes(...))) + 
   geom_boxplot(...) +
   geom_meanDiamonds(...)
Run Code Online (Sandbox Code Playgroud)

我不知道从哪里开始构建这个新功能.我知道平均钻石需要哪些值(平均值和置信区间),但我不知道如何构建从中获取数据的geom/stat ggplot(),计算每个组的平均值和CI,并绘制平均值.每个箱图的顶部.

我已经搜索了如何从头开始构建这些类型的函数的详细描述,但是,我还没有找到任何真正从底部开始的东西.我真的很感激,如果有人能指出我一些有用的指南.

谢谢!

r ggplot2 boxplot ggproto

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

角落处缺少geom_tile边界

我有以下数据框:

# Dummy data frame
df <- expand.grid(x = 1:3, y = 1:3)
Run Code Online (Sandbox Code Playgroud)

我想把它描绘成一个像这样的geom_tile使用ggplot2:

# Tile plot
ggplot(df) + 
  geom_tile(aes(x = x, y = y), 
            fill = NA, colour = "red", size = 3, width = 0.7, height = 0.7)
Run Code Online (Sandbox Code Playgroud)

这使,

在此输入图像描述

但请注意,在每个瓷砖的左上角,缺少一个缺口,其中边框不能正确地吻合.如果我使用,我会得到相同的结果geom_rect.有没有解决方法来避免这种情况?


R version 3.5.1 (2018-07-02)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

Matrix products: default  

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

9
推荐指数
2
解决办法
211
查看次数

在 R ggplot 的每个方面生成一个插图,同时保留原始方面内容的颜色

我想生成一个图形,将图形的四个方面与每个方面的插图相结合,显示相应图的细节。这是我尝试过的事情之一:

    #create data frame

n_replicates <- c(rep(1:10,15),rep(seq(10,100,10),15),rep(seq(100,1000,100),15),rep(seq(1000,10000,1000),15))
sim_years <- rep(sort(rep((1:15),10)),4)
sd_data <- rep (NA,600)
for (i in 1:600) {
sd_data[i]<-rnorm(1,mean=exp(0.1 * sim_years[i]), sd= 1/n_replicates[i])
}
max_rep <- sort(rep(c(10,100,1000,10000),150))
data_frame <- cbind.data.frame(n_replicates,sim_years,sd_data,max_rep)


#do first basic plot
library(ggplot2)
plot1<-ggplot(data=data_frame, aes(x=sim_years,y=sd_data,group =n_replicates, col=n_replicates)) + 
  geom_line() + theme_bw() +
  labs(title ="",  x = "year", y = "sd")
plot1


#make four facets
my_breaks = c(2, 10, 100, 1000, 10000)
facet_names <- c(
  `10` = "2, 3, ..., 10 replicates",
  `100` = "10, 20, ..., 100 …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 ggpmisc

9
推荐指数
3
解决办法
606
查看次数

在弹性表中添加表头 IN 表

我正在尝试使用 flextable 制作一个漂亮的表格,该表格可以编织成单词,并带有描述性横幅/标题

示例数据:

trialdata<-structure(list(` ` = c("Number per team", "Average height", "vegetarian", 
"meat", "carrot", "cucumber", "orange", 
"banana", "pepper", "tangerine", "Average Score", 
"Range Score", "Number of children", "Number of parents", 
"Number of grandparents"), `year 1` = c("20", "2", 
"25", "12", "4", "7", 
"7", "37", "21", "3", 
"-0.3", "78 : 1", "61", "19", 
"39"), `Year 2` = c("98", "28.2", "23", 
"1", "8", "6", "1", 
"36", "2", "29", "-0.2", "3 : 2", 
"6", "18", "9"), `Year 3` = c("88", 
"28.2", "24", "1", …
Run Code Online (Sandbox Code Playgroud)

r flextable knitr

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