小编DSA*_*DSA的帖子

ggplot2饼图标签中出现意外行为

我在这里检查了其他问题,但我看不出这个问题.我有标签问题.奇怪的是,除了一个标签之外,所有标签的代码都运行良好.当我检查数据集时(这非常简单),一切看起来都很好(一列有因子变量,另一列有数字).

这很奇怪,因为它适用于具有相同结构的其他一些数据.但是,我尝试/检查了一切,但无法解决这个问题.这是问题所在:

library(ggplot2)
library(ggrepel)

df = data.frame(
  status = c("Oak", "maple", "walnut", "Pine"),
  value = c( 47.54, 37.70, 11.48, 3.28))

ggplot(df, aes(x = "" , y = value, fill = fct_inorder(status))) +
  geom_bar(width = 1, stat = "identity") +
  coord_polar(theta = "y", start = 0 ) +
  scale_fill_brewer(palette = "Set3", direction = -4) +
  geom_label_repel(aes(label = paste0(value, "%")), size=4, show.legend = F, nudge_x = 1) +
  guides(fill = guide_legend(title = "Status")) +
  theme_void()
Run Code Online (Sandbox Code Playgroud)

其中一个标签提出了一个问题

如果我至少有一个建议来尝试或解释这种奇怪的行为,那就太好了.

显然,通过新的ggplot2更新,他们在不提供任何额外位置数据的情况下计算出位置问题,但不知何故,如果由于技术限制而无法使用它,这可能有助于解决此类问题.

r ggplot2 labeling pie-chart

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

R中ggplot2中多个图例的图例键之间的间距

我通过互联网搜索,但找不到解决我问题的方法。

为了更明确地说,我们有一个带有两个图例的图形,如下所示:

library(ggplot2)

ggplot() + 
  geom_point(data = mtcars, aes(x = disp, y = mpg, color = gear), 
             pch =20, size=18) + 
  geom_line(data = mtcars, aes(x = disp, y = mpg, size = disp/mpg*100)) +
  scale_size(range = c(0,3.5)) +
  guides(size = guide_legend("", order = 1, keywidth = 2, keyheight = 1.5), 
         color = guide_legend("", order = 2, keywidth = 1, keyheight = 1 )) +
  labs(x = "disp", y = "mpg") +
  geom_text(size=2.7, color = "grey29",  vjust=-0.8) +
  theme_bw() 

# ggsave("trial.png", …
Run Code Online (Sandbox Code Playgroud)

r legend ggplot2 legend-properties

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

R中观测数据的年龄计算

我假设有非常简单的大观测数据,结构如下:

> df = data.frame(ID = c("oak", "birch", rep("oak",2), "pine", "birch", "oak", rep("pine",2), "birch", "oak"),
+                 yearobs = c(rep(1998,3), rep(1999,2), rep(2000,3),rep(2001,2), 2002))
> df
      ID yearobs
1    oak    1998
2  birch    1998
3    oak    1998
4    oak    1999
5   pine    1999
6  birch    2000
7    oak    2000
8   pine    2000
9   pine    2001
10 birch    2001
11   oak    2002
Run Code Online (Sandbox Code Playgroud)

我想要做的是通过计算max(yearobs)-min(yearobs)每个唯一ID(在此示例中为树种)的年()之间的差来计算年龄。我尝试使用lubridate+ dplyr软件包,但是,每个唯一ID的观察值在我的数据中会有所不同,因此我想以最快的方式创建一个年龄列,而不必分别存储最小值和最大值(在这里请循环,因为我的数据是巨大)。

所需的输出:

     ID age
1   oak   4
2 birch   3
3  pine   3
Run Code Online (Sandbox Code Playgroud)

任何建议,将不胜感激。

r dataframe

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

标签 统计

r ×3

ggplot2 ×2

dataframe ×1

labeling ×1

legend ×1

legend-properties ×1

pie-chart ×1