相关疑难解决方法(0)

控制点边框厚度在ggplot中

当使用ggplot时,我可以设置shape为21-25来获取具有internal(fill)和border(col)颜色的独立设置的形状,如下所示:

df <- data.frame(id=runif(12), x=1:12, y=runif(12))
ggplot(df, aes(x=x, y=y)) + 
  geom_point(aes(fill=id, size=id), colour="black", shape=21)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,我无法弄清楚如何控制形状边框的厚度,无论是绝对设置还是美学映射.我注意到,如果我设置一个lwd值,它会覆盖size美学:

ggplot(df, aes(x=x, y=y)) + 
  geom_point(aes(fill=id, size=id), colour="black", shape=21, lwd=2)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如何控制边框厚度?

r border point thickness ggplot2

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

如何在ggplot中将剪贴蒙版应用于geom?

我正在尝试将剪贴蒙版应用于ggplot中的geom以遮盖部分数据,但保持轴,网格,其他geom和图例可见.我不想创建一个特定的情节,因此我不是在寻找一个处理阴影的某些部分的多边形.

这是我想要模仿的设计(面具,不一定是主题,我现在该怎么做):

在一些图层上使用中央圆形剪贴蒙版进行映射

(来源)

另请参见此示例

有人可能会争辩说我可以过滤未定义掩码的多边形中包含的数据.但是,虽然它适用于点,并且可以用于多边形/线状对象,但它适用于栅格(边框不会完全遵循非垂直或非水平线).所以我尝试了以下方法:

library(ggplot2)
library(gridSVG)
library(grImport)

# Create a plot
p <- ggplot(diamonds[1:300,], aes(carat, price)) + geom_point(aes(colour = cut))

# And a clipping mask
pg <- polygonGrob(c(.7, 0, 0, 1, 1),
              c(0, .7, 1, 1, 0))
cp <- clipPath(pg)
Run Code Online (Sandbox Code Playgroud)

我能够使用包gridSVG定义剪贴蒙版,但我必须将它ggplot对象上的困难,甚至提取GROB后(见资源在这里)有ggplotGrob().我无法将剪贴蒙版应用于grob:

g <-  ggplotGrob(p) # store the plot as a grob

registerClipPath("mask", cp)
g_clipped <- clipPath(g)

gridsvg(name = "test_c2.svg")
grid.draw(clipPathGrob(g_clipped, cp)$grob)
dev.off()
Run Code Online (Sandbox Code Playgroud)

我的直觉是g_clipped应该绘制,但我不能grid.draw(),因为它是一个clipPath对象.grid.draw() …

r clipping mask ggplot2 grob

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

得到R曲线类型"b"

在ggplot2中有一种方法可以获得情节类型"b"吗?见例子:

x <- c(1:5)
y <- x 
plot(x,y,type="b")
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想用它们的值替换点,以获得类似于这个着名示例的东西:

替代文字

编辑:这里有一些样本数据(我想在情节类型为"b"的方面绘制每个"猫"):

df <- data.frame(x=rep(1:5,9),y=c(0.02,0.04,0.07,0.09,0.11,0.13,0.16,0.18,0.2,0.22,0.24,0.27,0.29,0.31,0.33,0.36,0.38,0.4,0.42,0.44,0.47,0.49,0.51,0.53,0.56,0.58,0.6,0.62,0.64,0.67,0.69,0.71,0.73,0.76,0.78,0.8,0.82,0.84,0.87,0.89,0.91,0.93,0.96,0.98,1),cat=rep(paste("a",1:9,sep=""),each=5))
Run Code Online (Sandbox Code Playgroud)

此致,穆萨

r ggplot2

5
推荐指数
2
解决办法
1537
查看次数

在ggplot中偏移geom_segment

I'm trying to build a network plot in ggplot. Two things: 1) I need to put the nodes at specific (x, y) values. This isn't a problem. 2) The network plot is directed but I need to be able to show differences in going from, say, Node B to Node A than from Node A to Node B.

It's that latter bit I'm having trouble with. Basically I need to offset two lines running parallel between nodes. Ultimately the lines' …

r ggplot2

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

使用自定义几何图形分组失败 - 如何从 draw_panel() 检查内部对象

这是一个与自定义 geom 相关的问题,从这个答案修改。给定的 geom 分组失败,所以我包含coord_munch在 中draw_panel,受到GeomLine和 的启发GeomPath。它实际上在许多情况下都有效,但我觉得它同样经常失败。

特别是,它似乎以两人为一组失败(参见下面的示例),并且在使用拼凑而成的某些情节时奇怪地失败。我打开了一个问题,但还没有得到答复,我对此并不感到惊讶,我同意并觉得这实际上是一个写得不好的geom问题,而不是一个拼凑的问题。

我相信## Work out grouping variables for grobs用于 GeomPath的分组(在代码中,用

我的主要问题是,我如何检查这个对象?

如果有人看到并理解我的 geom 的问题,我会更加感激。干杯

例子:

library(tidyverse)

## this is not an arrange problem, as shown by the correct plot using geom_path
testdf <- testdf %>% arrange(id, group, x) 
Run Code Online (Sandbox Code Playgroud)

与 geom_path 一起使用

ggplot(testdf, aes(x, y)) +
  geom_path(aes(group = id))
Run Code Online (Sandbox Code Playgroud)

geom_trail 失败

ggplot(testdf, aes(x, y)) +
  geom_path(aes(group = id))
Run Code Online (Sandbox Code Playgroud)

使用颜色时更糟糕

ggplot(testdf, aes(x, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 ggproto

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

标签 统计

ggplot2 ×5

r ×5

border ×1

clipping ×1

ggproto ×1

grob ×1

mask ×1

point ×1

thickness ×1