【问题标题】:no. of geom_point matches the value不。 geom_point 的匹配值
【发布时间】:2023-03-06 07:09:01
【问题描述】:

我有一个现有的带有 geom_col 的 ggplot 和一些来自数据框的观察结果。数据框看起来像:

over runs wickets
1 12 0
2 8 0
3 9 2
4 3 1
5 6 0

geom_col 表示运行数据列,现在我想使用 geom_point 以点数表示 wickets 的方式表示 wickets 列。

我希望我的图表看起来像这样:

作为

【问题讨论】:

  • 我很想知道答案是什么,因为我不知道!作弊是为检票口使用标签 - df <- data.frame(over = seq(1:5), runs = c(12, 8, 9, 3, 6), wickets = c(0, 1, 0, 0, 2)) df_conc <- df %>% filter(wickets > 0) ggplot(data = df, aes(x = over, y = runs)) + geom_col(fill = viridis(10, option = "B")[2]) + geom_label(data = df_conc, aes(x = over, y = runs + 1, label = wickets),label.r = unit(0, "lines")) + theme_bw()

标签: r ggplot2 plot graph


【解决方案1】:

据我所知,我们需要将您的数据转换为每个点有一行。此方法需要 dplyr 版本 > 1.0,这允许 summarize 扩展行数。

您可以通过乘以 seq(wickets) 来调整检票口的间距,尽管对于您的样本数据,1 个单位的间距对我来说看起来不错。

library(dplyr)

wicket_data = dd %>%
  filter(wickets > 0) %>%
  group_by(over) %>%
  summarize(wicket_y = runs + seq(wickets))

ggplot(dd, aes(x = over)) +
  geom_col(aes(y = runs), fill = "#A6C6FF") +
  geom_point(data = wicket_data, aes(y = wicket_y), color = "firebrick4") +
  theme_bw()


使用此示例数据:

dd = read.table(text = "over runs wickets
1 12 0
2 8 0
3 9 2
4 3 1
5 6 0", header = T)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 2016-06-24
    相关资源
    最近更新 更多