我正在使用 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)
以下是上述代码的绘图:
我正在使用带有行和列的“tmap”包绘制多面地图。我无法调整行的分面标签的高度,这会导致分面标签在大于特定尺寸或旋转时被裁剪。
我尝试调整tm_layout()面板的所有参数,包括panel.label.height、panel.label.size和panel.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,以便我可以读取面板中的标签,但它们似乎是固定的,并且如图输出所示被裁剪。
我正在尝试使用 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) 我有一个使用库生成的拥挤地图,我已经使用函数中的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) 比如我想随机排列0、1(分别为50%)10次。所以,应该有五个“0”和五个“1”。
但是,当我使用时:
rbinom(10,1,0.5)
Run Code Online (Sandbox Code Playgroud)
有时,它会生成四个“0”和六个“1”。
我注意到该sample()功能也有这个问题。
应该有五个“0”和五个“1”,并且顺序应该是随机的。