我想用这个gganimate包创建一个动画条形图。条形图应包含 4 个条形,但应同时显示其中的三个条形。当一根柱线脱落而新柱线出现时,动画应该是平滑的(就像两个柱线在图中切换位置时一样)。
考虑以下示例:
# Set seed
set.seed(642)
# Create example data
df <- data.frame(ordering = c(rep(1:3, 2), 3:1, rep(1:3, 2)),
year = factor(sort(rep(2001:2005, 3))),
value = round(runif(15, 0, 100)),
group = c(letters[sample(1:4, 3)],
letters[sample(1:4, 3)],
letters[sample(1:4, 3)],
letters[sample(1:4, 3)],
letters[sample(1:4, 3)]))
# Load packages
library("gganimate")
library("ggplot2")
# Create animated ggplot
ggp <- ggplot(df, aes(x = ordering, y = value)) +
geom_bar(stat = "identity", aes(fill = group)) +
transition_states(year, transition_length = 2, state_length = 0)
ggp
Run Code Online (Sandbox Code Playgroud)
如果更换了一个酒吧,酒吧的颜色只是改变,没有任何平滑的动画(即新的酒吧应该从侧面飞入,替换的酒吧应该飞出)。
问题:我怎样才能顺利更换钢筋?
我想创建一个 ggplot2 条形图,条形顶部有圆角。考虑以下示例数据:
data <- data.frame(x = letters[1:3],
y = c(5, 1, 4))
Run Code Online (Sandbox Code Playgroud)
基于 ggchicklet 包,我可以绘制带有圆角的 ggplot2 条形图:
library("ggplot2")
library("ggchicklet")
ggplot(data, aes(x, y)) +
geom_chicklet(radius = grid::unit(10, 'mm'))
Run Code Online (Sandbox Code Playgroud)
然而,正如您在图像中看到的,条形两侧的角都是圆的。如何创建 ggplot2 条形图,其中只有条形的顶部是圆形的?
我想在整个 ggplot2 图周围绘制边框,例如在 Base R 图的情况下使用 box("figure") 函数。
看一下下面的例子:
data <- data.frame(x = 1:5,
y = 1:5)
library("ggplot2")
ggplot(data, aes(x, y)) +
geom_point()
Run Code Online (Sandbox Code Playgroud)
我想在该图周围添加边框,如下所示:
我不敢相信这个信息在任何地方都不存在。不幸的是,我找到的只是如何添加面板边框。
如何在整个ggplot2 图周围添加边框?
我有一个 R 文件存储在我的计算机上的目录中。我想以自动方式创建此 R 文件的 10 个副本。该 R 文件的 10 个副本应存储在同一目录中,并且每个副本应具有不同的文件名。
例子:
我的工作目录:
getwd()
# [1] "D:/Example Directory"
Run Code Online (Sandbox Code Playgroud)
使用dir 函数,我可以提取存储在该目录中的所有文件的名称:
path <- getwd()
dir(path)
# "1.R"
Run Code Online (Sandbox Code Playgroud)
该目录中唯一的文件是 R 文件1.R。我想复制这个 R 文件 10 次。重复项应称为2.R、3.R、4.R等等。
这可以通过手动复制/粘贴轻松完成。但是,由于我必须多次复制该文件,因此我正在 R 中寻找一种自动化方法。
问题:如何以自动方式复制此 R 文件?
我对R比较新,对循环有点困惑.
在命中指定条件后,我尝试在for循环中重复几个步骤.我试图把循环放回一步,但已经认识到循环不断计数并忽略我的命令.这是一个简单的例子来说明我的意思:
a <- 1:10
b <- rep(NA, 15)
fun <- function(){
i <- 1
for(i in 1:10){
b[i] <- a[i]
i <- i - 1 # This is the line I am talking about.
}
return(b)
}
fun()
[1] 1 2 3 4 5 6 7 8 9 10 NA NA NA NA NA
Run Code Online (Sandbox Code Playgroud)
我原以为这个代码会永远运行,只分配1个.有没有办法如何在循环中向后退一步或者我必须采取完全不同的方法?
非常感谢提前!
我正在尝试创建一个包含2个密度的直线和2个虚线密度的ggplot。2个密度是蓝色,其他2个是红色。我的情节应该包括关于这些密度的带有颜色和线条的图例。
尽管我认为必须有一个简单的解决方案,但我无法在图例中产生虚线。我试图基于多个线程(例如here或here)解决问题,但是我的ggplot代码已经很复杂,这些线程的示例以不同的方式使用ggplot。因此,我没有设法重现这些线程的结果。
这是我到目前为止所做的可复制示例。最后一行scale_linetype_manual似乎不起作用。如何在图例中为grp3和grp4产生虚线?
library(ggplot2)
set.seed(123)
# Example data
N <- 1000
x1 <- rnorm(N, 5)
x2 <- rnorm(N, 10)
x3 <- rnorm(N, 15)
x4 <- rnorm(N, 20)
ggplot() +
stat_density(aes(x = x1, col = "grp1"), position = "identity", geom = "line") +
stat_density(aes(x = x2, col = "grp2"), position = "identity", geom = "line") +
stat_density(aes(x = x3, col = "grp3"), position = "identity", geom = "line", linetype = 2) +
stat_density(aes(x = x4, …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的变量:
Var
[1] 3, 4, 5 2, 4, 5 2, 4 1, 4, 5
Run Code Online (Sandbox Code Playgroud)
我需要将其拆分为数据框,如下所示:
V1 V2 V3 V4 V5
NA NA 3 4 5
NA 2 NA 4 5
NA 2 NA 4 NA
1 NA NA 4 5
Run Code Online (Sandbox Code Playgroud)
不幸的是,我找不到能解决我问题的帖子.有谁知道我怎么能这样做?非常感谢你提前!
编辑:我找到了一个基于你的答案的解决方案,并在下面发布.
Edit2:我使用Ananda的解决方案提高了代码的效率.