小编lov*_*ery的帖子

使边缘指向 ggraph 中排斥的标签

我正在使用 ggraph R 包创建一个图表。我想使用 来标记所有节点geom_node_label(),但这通常会造成重叠。解决这个问题的一种方法是使用参数repel=TRUE。不幸的是,我似乎无法弄清楚如何使边缘指向标签已移动的位置。

解决这个问题的一种可能的方法可能是在制作图表之前进行排斥布局,但我也没有找到一种方法。

library(igraph)
library(ggraph)

# Create example graph
my_graph <- make_graph('Meredith')
V(my_graph)$Label <- 1:70


set.seed(2222) # reproducible layout
ggraph(my_graph) +
    geom_edge_link() +
    geom_node_label(aes(label = Label), repel=FALSE) +
    theme_graph()

# Graph with repel = TRUE
set.seed(2222)
ggraph(my_graph) +
    geom_edge_link() +
    geom_node_label(aes(label = Label), repel=TRUE) +
    theme_graph()
Run Code Online (Sandbox Code Playgroud)

以下是上述代码的绘图:

  • 地块 1:

在此输入图像描述

  • 情节2:

在此输入图像描述

r ggplot2 ggrepel ggraph

5
推荐指数
0
解决办法
670
查看次数

如何调整分面 tmap 图中的分面行标签高度?

我正在使用带有行和列的“tmap”包绘制多面地图。我无法调整行的分面标签的高度,这会导致分面标签在大于特定尺寸或旋转时被裁剪。

我尝试调整tm_layout()面板的所有参数,包括panel.label.heightpanel.label.sizepanel.label.rot.(使用 R 3.5.3、tmap_2.3 和 tmaptools_2.0-2)。Panel.label.height似乎只影响柱子的面板高度。我觉得我需要panel.label.width对标签行做同样的事情。

library(tmap);library(dplyr)

data(metro)

metro_edited <- metro %>% 
  mutate(pop1950cat = cut(pop1950, breaks=c(5, 10, 40)*1e6),
         pop2020cat = cut(pop2020, breaks=c(5, 10, 40)*1e6))


tm_shape(metro_edited) +
  tm_dots("red", size = .5) +
  tm_facets(c("pop1950cat", "pop2020cat"), 
            free.coords = FALSE)+ 
  tm_layout(panel.label.height=5, panel.label.size = 1, panel.label.rot = c(0,0))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我预计行面的面板标签高度也会增加到 5,以便我可以读取面板中的标签,但它们似乎是固定的,并且如图输出所示被裁剪。

r tmap

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

使用 R 中的 openxlsx 包格式化数字

我正在尝试使用 openxlsx 格式化某些列,以将 r 数据帧写入 Excel 文件。

这是 R 数据框的片段:

在此输入图像描述

“种子”列中的方括号部分用于为 Excel 输出添加上标。

这是我用来编写该文件的代码:


openxlsx::addWorksheet(wb, sheetName = 'data') # add sheet

openxlsx::writeData(wb, sheet ='data', 
                    x=df, xy=c(1, 1),withFilter = T) # write data on workbook

# make quality codes superscript
for(i in grep("\\_\\[([A-z0-9\\s]*)\\]", wb$sharedStrings)){
  # if empty string in superscript notation, then just remove the superscript notation
  if(grepl("\\_\\[\\]", wb$sharedStrings[[i]])){
    wb$sharedStrings[[i]] <- gsub("\\_\\[\\]", "", wb$sharedStrings[[i]])
    next # skip to next iteration
  }
  
  # insert additional formatting in shared string
  wb$sharedStrings[[i]] <- gsub("<si>", …
Run Code Online (Sandbox Code Playgroud)

r openxlsx

5
推荐指数
0
解决办法
1605
查看次数

仅在 tmap 中绘制图例

我有一个使用库生成的拥挤地图,我已经使用函数中的tmap参数关闭了图例。legend.show = FALSEtm_layout()

我想知道的是:有没有办法自己为这张地图生成图例?这样它就可以成为一个独立的图像?

(很抱歉,代码不会为您提供地图)

tm_borders()+
tm_shape(parks)+
  tm_polygons()+
tm_shape(houses)+
  tm_polygons()+
tm_shape(grid)+
    tm_polygons(col="n", style ="cont", palette="plasma",alpha = 0.5)+
tm_layout(legend.show=FALSE)  
Run Code Online (Sandbox Code Playgroud)

编辑: 是的。它在帮助文件中,它是:函数legend.only = TRUE中的参数tm_layout()

  tm_borders()+
    tm_shape(parks)+
      tm_polygons()+
    tm_shape(houses)+
      tm_polygons()+
    tm_shape(grid)+
        tm_polygons(col="n", style ="cont", palette="plasma",alpha = 0.5)+
    tm_layout(legend.only= T)
Run Code Online (Sandbox Code Playgroud)

gis r tmap

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

如何随机采样二项式事物?

比如我想随机排列0、1(分别为50%)10次。所以,应该有五个“0”和五个“1”。

但是,当我使用时:

rbinom(10,1,0.5)
Run Code Online (Sandbox Code Playgroud)

有时,它会生成四个“0”和六个“1”。

我注意到该sample()功能也有这个问题。

应该有五个“0”和五个“1”,并且顺序应该是随机的。

simulation r binomial-coefficients

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

标签 统计

r ×5

tmap ×2

binomial-coefficients ×1

ggplot2 ×1

ggraph ×1

ggrepel ×1

gis ×1

openxlsx ×1

simulation ×1