我想在facet_wraps的上面一行中的图上显示x轴刻度.例如:
library(ggplot2)
ggplot(diamonds, aes(carat)) + facet_wrap(~ cut, scales = "fixed") + geom_density()
Run Code Online (Sandbox Code Playgroud)
生成这个情节:
有没有一种简单的方法来实现这个结果?
我正在使用ggplot为所有点绘制具有恒定透明度值的许多点.
我发现圆形点的填充比其单独的边界更加透明,因此边界明显比填充更明亮(我在黑暗的背景上绘制光圈).
library(ggplot2)
set.seed(123)
data <- data.frame( x = sample(1:100,2000, replace=T),
y = sample(1:100,2000, replace=T) )
ggplot(data, aes(x,y)) +
geom_point(alpha=0.2, color="dodgerblue", fill="dodgerblue", size=4) +
theme(panel.background = element_rect(fill = 'black', colour = 'black'))
Run Code Online (Sandbox Code Playgroud)
我不确定为什么会这样做,所以关于为什么会发生这种情况的信息会很棒.
可能的解决方案是使边框和填充相同的透明度,或使边框100%透明(设置边框,比如背景颜色,当点重叠时会破坏视觉效果).我不知道怎么做其中任何一个.
*以下讨论后添加了编辑*
在RStudio查看器中查看绘图或保存的PNG时会出现此问题.查看已保存的PDF时不会显示.然而,我的真实数据集很大,矢量图形在绘制大量点时效率低,所以我想要一个替代解决方案!
我想要一个平滑的渐变,从 0 处的红色到 0.5 处的白色到 1 处的绿色。
我的数据没有涵盖这个完整的范围,并且似乎scale_fill_gradientn将values参数与数据相关,而不是它们的实际值。
下面生成的图显示白色高于 0.5 而不是 0.5。我该如何纠正这个问题并将梯度限制设置为我写的特定值,而不是相对于数据?
library(tidyverse)
set.seed(1)
expand_grid(x=1:10, y=1:10) %>%
mutate(val = rnorm(100, mean = 0.55, sd = 0.05)) %>%
ggplot(aes(x, y)) +
geom_tile(aes(fill = val)) +
geom_text(aes(label = round(val, 3))) +
scale_fill_gradientn(colours = c("red","white","green"),
values = scales::rescale(c(0.0, 0.5, 1.0)))
Run Code Online (Sandbox Code Playgroud)
将一些文本后跟数据框写入文件的最佳方法是什么?文本是通过将变量粘贴到字符串中来创建的。
示例所需的输出:
Here is some text.
This line has a variable: Hello World
Data frame below the line
=================
ID,val1,val2
1,2,3
2,4,6
3,6,9
4,8,12
5,10,15
6,12,18
7,14,21
8,16,24
9,18,27
10,20,30
Run Code Online (Sandbox Code Playgroud)
我可以用初始文本创建一个字符串:
myvar <- "Hello World"
out_string <- paste0("Here is some text.\n",
"This line has a variable: ", myvar, "\n",
"Data frame below the line\n",
"=================\n")
cat(out_string)
Run Code Online (Sandbox Code Playgroud)
我可以将数据帧写入文件:
library(data.table)
mydf <- data.frame(ID = 1:10, val1 = 1:10*2, val2 = 1:10*3)
fwrite(x = mydf,
file = "path/file.txt",
sep = ",",
col.names=T)
Run Code Online (Sandbox Code Playgroud)
但我不确定如何最好地将这两者结合起来。 …
readr::read_csv添加编辑数据时不会更新的属性。例如,
library(\'tidyverse\')\ndf <- read_csv("A,B,C\\na,1,x\\nb,1,y\\nc,1,z")\n\n# Remove columns with only one distinct entry\nno_info <- df %>% sapply(n_distinct)\nno_info <- names(no_info[no_info==1]) \n\ndf2 <- df %>% \n select(-no_info)\nRun Code Online (Sandbox Code Playgroud)\n\n检查结构,我们看到 B 列仍然存在于 的属性中df2:
> str(df)\nClasses \xe2\x80\x98spec_tbl_df\xe2\x80\x99, \xe2\x80\x98tbl_df\xe2\x80\x99, \xe2\x80\x98tbl\xe2\x80\x99 and \'data.frame\': 3 obs. of 3 variables:\n $ A: chr "a" "b" "c"\n $ B: num 1 1 1\n $ C: chr "x" "y" "z"\n - attr(*, "spec")=\n .. cols(\n .. A = col_character(),\n .. B = col_double(),\n .. C = col_character()\n …Run Code Online (Sandbox Code Playgroud) 我有一个数据框,并希望对其执行一些特定的操作.
dat <- data.frame(Name = LETTERS[1:3],
Val1 = rnorm(3),
Val2 = rnorm(3))
# > dat
# Name Val1 Val2
# 1 A -1.055050 0.4499766
# 2 B 0.414994 -0.5999369
# 3 C -1.311374 -0.3967634
Run Code Online (Sandbox Code Playgroud)
我想做以下事情:
AB1 <- dat[dat$Name == "A", "Val1"] / dat[dat$Name == "B", "Val1"]
AC1 <- dat[dat$Name == "A", "Val1"] / dat[dat$Name == "C", "Val1"]
BC1 <- dat[dat$Name == "B", "Val1"] / dat[dat$Name == "C", "Val1"]
Run Code Online (Sandbox Code Playgroud)
AB2 <- dat[dat$Name == "A", "Val2"] / dat[dat$Name == "B", …Run Code Online (Sandbox Code Playgroud)