我最近开始使用 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 中的含义与我在其他编程语言中习惯的含义不同?
该函数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) 在这篇文章中:https://www.nature.com/articles/s41591-022-01744-z.epdf 我注意到一个有趣的情节:
在 R 中是否有一种简单的方法可以做到这一点?
编辑:我知道有类似的问题,但没有涉及标记改进/恶化情况的颜色编码方案。
我有两年来的水位图。我有一列日期时间(格式 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)
这是情节的一个例子。
注意:这也是正在进行的数据收集的一部分,因此我不想对最后日期进行硬编码。
该热图有一个内置网格,我无法找到自定义的方法。
我想保留网格中的水平线,如果可能的话增加厚度,并禁用垂直线。每行应该看起来像一个连续的时间序列,其中存在数据,而不存在数据则为空白。
在顶部添加垂直/水平线可能会覆盖一些数据,因为网格线或小矩形之间的受控间隙是更好的选择。
或者,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) 我想我一定是误解line =了 中的论点theme()。根据 中的文档?theme,line =应该会影响图中的所有线元素。然而,改变颜色没有任何作用,而改变大小却起作用。
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)
我的问题有两个:
为什么更改颜色不会影响图中的任何线条?
为什么更改尺寸不会影响 中的线条元素geom_smooth()?
编辑:请参阅@Gregor Thomas 的答案以获取第 2 部分的答案。
我正在尝试在 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) 我正在使用 ggplot 创建数据框的散点图。x 轴和 y 轴是框架中的两列,以下代码给出了散点图:
ggplot(df,aes(x=Season,y=type))+
geom_point(fill="blue")
Run Code Online (Sandbox Code Playgroud)
但这些点的大小都是相同的。我希望每个点取决于与 x 和 y 的组合匹配的行数。有人知道怎么做吗?
ggplot2 ×10
r ×10
bar-chart ×2
plot ×2
datetime ×1
gantt-chart ×1
geom-point ×1
grid ×1
heatmap ×1
longitudinal ×1
radial ×1
scatter-plot ×1
themes ×1
time-series ×1