小编con*_*nor的帖子

ggplot为facet_wrap中的每个绘图添加刻度

我想在facet_wraps的上面一行中的图上显示x轴刻度.例如:

library(ggplot2)
ggplot(diamonds, aes(carat)) +  facet_wrap(~ cut, scales = "fixed") +  geom_density()
Run Code Online (Sandbox Code Playgroud)

生成这个情节:

实际情节

我想在这个情节中画出蜱虫: 期望的情节

有没有一种简单的方法来实现这个结果?

r facet ggplot2 facet-wrap

7
推荐指数
1
解决办法
1740
查看次数

ggplot alpha级别在点的填充和边界上显示不同

我正在使用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时不会显示.然而,我的真实数据集很大,矢量图形在绘制大量点时效率低,所以我想要一个替代解决方案!

transparency visualization alpha r ggplot2

6
推荐指数
2
解决办法
3789
查看次数

在 scale_fill_gradientn 中使用绝对值而不是相对值

我想要一个平滑的渐变,从 0 处的红色到 0.5 处的白色到 1 处的绿色。

我的数据没有涵盖这个完整的范围,并且似乎scale_fill_gradientnvalues参数与数据相关,而不是它们的实际值。

下面生成的图显示白色高于 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)

heatmap_example

gradient r heatmap ggplot2

5
推荐指数
1
解决办法
175
查看次数

r 将文本和数据框写入文件

将一些文本后跟数据框写入文件的最佳方法是什么?文本是通过将变量粘贴到字符串中来创建的。

示例所需的输出:

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)

但我不确定如何最好地将这两者结合起来。 …

string r fwrite dataframe

4
推荐指数
1
解决办法
4863
查看次数

从 readr::read_csv 中读取的数据中删除属性

readr::read_csv添加编辑数据时不会更新的属性。例如,

\n\n
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)\n
Run Code Online (Sandbox Code Playgroud)\n\n

检查结构,我们看到 B 列仍然存在于 的属性中df2

\n\n
> 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)

r readr

4
推荐指数
1
解决办法
3060
查看次数

R成对运算

我有一个数据框,并希望对其执行一些特定的操作.

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)

我想做以下事情:

  1. 在名称上成对划分Val1,例如
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)
  1. 在名称上成对划分Val2,例如
AB2 <- dat[dat$Name == "A", "Val2"] / dat[dat$Name == "B", …
Run Code Online (Sandbox Code Playgroud)

r

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