标签: ggplot2

ggplot 使用“+”运算符到底做了什么?

我最近开始使用 R,并且对我的班级正在使用的 ggplot 感到困惑。我习惯了+运算符只添加两个输出,但我发现在 ggplot 中你可以执行以下操作:

ggplot(data = bechdel, aes(x = domgross_2013)) +
  geom_histogram(bins = 10, color="purple", fill="white") +
  labs(title = "Domestic Growth of Movies", x = " Domestic Growth")
Run Code Online (Sandbox Code Playgroud)

这里我们将两个函数调用添加在一起。这里到底发生了什么?ggplot 是否“重写”+运算符(也许就像如何重写==dart 中的运算符?)以便做一些不同的事情?或者“+”运算符在 R 中的含义与我在其他编程语言中习惯的含义不同?

r ggplot2

0
推荐指数
1
解决办法
331
查看次数

在 R 中,如何调整 stat_pvalue_manual() 中的有效位数?

该函数stat_pvalue_manual()将使用 向箱线图添加 p 值ggboxplot。然而,打印的 p 值有时有很多位长。我想将小数位数限制为 3 位。我该怎么做?

从下图中您将看到 versicolor 和 virginica 的 p 值为小数点后 5 位,如何调整下面的代码以报告小数点后 3 位(即 0.009)?

library(tidyverse)
library(rstatix)
library(ggpubr)

test <- iris
test$Species <- as.factor(test$Species)
test.aov <- test %>% anova_test(Sepal.Width ~ Species)
test.tukey <- test %>% tukey_hsd(Sepal.Width ~ Species)
test.tukey <- test.tukey %>% add_xy_position(x = "Species")

ggboxplot(test, x = "Species", y = "Sepal.Width", outlier.shape = NA) +
  stat_pvalue_manual(test.tukey, hide.ns = TRUE, y.position = c(5,4.5,4), label = "p = {p.adj}") +
  geom_jitter(shape=16, alpha …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

0
推荐指数
1
解决办法
1374
查看次数

复制颜色编码的意大利面条图

在这篇文章中:https://www.nature.com/articles/s41591-022-01744-z.epdf 我注意到一个有趣的情节:

意大利面图2

在 R 中是否有一种简单的方法可以做到这一点?

编辑:我知道有类似的问题,但没有涉及标记改进/恶化情况的颜色编码方案。

plot r ggplot2 longitudinal

0
推荐指数
2
解决办法
249
查看次数

使用 ggplot scale_x_datetime() 设置 x 轴上的第一个日期

我有两年来的水位图。我有一列日期时间(格式 POSIXct 并显示为 2020-03-05 17:00:00)。数据框中有 18,000 行数据。第一条记录是 2020 年 3 月 5 日。当我绘制数据时,x 轴上出现的第一个日期是 Jul-20。3月20日我该怎么做?

这是我目前拥有的与这部分情节设计相关的代码。

scale_x_datetime(
      date_breaks="6 months",
      date_labels="%b-%y")
Run Code Online (Sandbox Code Playgroud)

这是情节的一个例子。

在此输入图像描述

注意:这也是正在进行的数据收集的一部分,因此我不想对最后日期进行硬编码。

datetime r ggplot2

0
推荐指数
1
解决办法
2246
查看次数

创建特殊的径向条形图(赛道图)

我能够在这里复制另一个好的答案来创建一个基本的径向图,但是任何人都可以给我任何其他函数/参数/想法的线索,了解如何将基本函数转换为与此类似的东西: 在此输入图像描述

plot r radial bar-chart ggplot2

0
推荐指数
1
解决办法
536
查看次数

调整ggplot+geom_tile(热图)或geom_raster中的网格线

该热图有一个内置网格,我无法找到自定义的方法。

我想保留网格中的水平线,如果可能的话增加厚度,并禁用垂直线。每行应该看起来像一个连续的时间序列,其中存在数据,而不存在数据则为空白。

在顶部添加垂直/水平线可能会覆盖一些数据,因为网格线或小矩形之间的受控间隙是更好的选择。

带有 geom_tile 的热图

或者,geom_raster根本不显示任何网格。我需要添加网格的水平线。

带有 geom_raster 的热图

我尝试更改线型,即 geom_tile 参数,它似乎确实更改了类型或允许使用 linetype=0 完全禁用它,完全禁用网格,但它不允许保留水平网格线。通过修改大小参数,我没有看到任何变化。

这是生成上述绘图的代码:

ggplot( DF, aes( x=rows, y=name, fill = value) ) +   
    #geom_raster( ) +
    geom_tile( colour = 'white' ) +
    scale_fill_gradient(low="steelblue", high="black", 
                        na.value = "white")+
    theme_minimal() +
    theme( 
      legend.position = "none",
      plot.margin=margin(grid::unit(0, "cm")),
      #line = element_blank(),
      #panel.grid = element_blank(),
      panel.border = element_blank(),
      panel.grid = element_blank(),
      panel.spacing = element_blank(),
      #panel.grid = element_line(color="black"),
      #panel.grid.minor = element_blank(),
      plot.caption = element_text(hjust=0, size=8, face = "italic"),
      plot.subtitle = element_text(hjust=0, size=8),
      plot.title   = element_text(hjust=0, size=12, …
Run Code Online (Sandbox Code Playgroud)

grid r time-series heatmap ggplot2

0
推荐指数
1
解决办法
1294
查看次数

ggplot theme():为什么改变线条颜色没有任何作用?

我想我一定是误解line =了 中的论点theme()。根据 中的文档?themeline =应该会影响图中的所有线元素。然而,改变颜色没有任何作用,而改变大小却起作用。

library(ggplot2)
ggplot(iris, aes(x = Sepal.Width, Petal.Length)) +
  geom_point() +
  geom_smooth() +
  theme(line = element_line(color = "green", size = 5))
#> `geom_smooth()` using method = 'loess' and formula 'y ~ x'
Run Code Online (Sandbox Code Playgroud)

由reprex 包于 2022 年 8 月 15 日创建(v2.0.1)

我的问题有两个:

  1. 为什么更改颜色不会影响图中的任何线条?

  2. 为什么更改尺寸不会影响 中的线条元素geom_smooth()

编辑:请参阅@Gregor Thomas 的答案以获取第 2 部分的答案。

themes r ggplot2

0
推荐指数
1
解决办法
472
查看次数

如何使用 R 将平均值绘制为条形图?

在此输入图像描述

如果我有这样的表格,如何使用 ggplot 制作条形图,其中平均值作为条形的高度,误差条作为 R 中的标准误差?

r bar-chart ggplot2

0
推荐指数
1
解决办法
57
查看次数

是否可以在 ggplot 中制作在同一个图表上具有多个时间间隔的甘特图?

我正在尝试在 R 中创建一个甘特图,其中我可以在同一个图表上将实际开始和实际完成与建议开始和建议完成的时间线进行比较。因此,y 轴会显示两次“仓库”,然后 x 轴将显示每个时间间隔的分段。

下面是我用来尝试此操作的代码,但它显然不起作用。

一如既往,我感谢任何和所有的帮助。谢谢。

library(tidyverse)


project_data <- tibble(
  Project_Name = c("Warehouse"),
  Proposed_Start = c("05-01-2022"),
  Proposed_Finish = c("12-01-2022"),
  Actual_Start = c("07-01-2022"),
  Actual_Finish = c("12-31-2022")
)


project_data %>%
      ggplot() +
        aes(x = Proposed_Start, xend = Proposed_Finish,
            y = Project_Name, yend = Project_Name,
            color = "green") +
        geom_segment(size = 8) +
        aes(x = Actual_Start, xend = Actual_Finish,
            y = Project_Name, yend = Project_Name,
            color = "red") +
        geom_segment(size = 8) +
        labs(title = "Comparing Project Proposed and Actual Dates", …
Run Code Online (Sandbox Code Playgroud)

r gantt-chart ggplot2

0
推荐指数
1
解决办法
381
查看次数

如何使 geom_point 散点图中的点取决于计数?

我正在使用 ggplot 创建数据框的散点图。x 轴和 y 轴是框架中的两列,以下代码给出了散点图:

ggplot(df,aes(x=Season,y=type))+
  geom_point(fill="blue")
Run Code Online (Sandbox Code Playgroud)

但这些点的大小都是相同的。我希望每个点取决于与 x 和 y 的组合匹配的行数。有人知道怎么做吗?

r scatter-plot ggplot2 geom-point

0
推荐指数
1
解决办法
550
查看次数