小编mar*_*kus的帖子

如何在ggplot2中设置geom_smooth的se(置信区间)的颜色?

当我设置函数时geom_smooth(..., se = TURE),置信区间为灰色,但我想设置一些其他颜色。

貌似是geom_smooth里面不能设置颜色的参数。我应该创建一个新的geom吗?或者是否可以使用一些 ggplot2 扩展?谢谢

r ggplot2

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

仅将geom默认美学更改为主题组件的一部分 - ggplot2

对于自定义ggplot2主题,我想改变一些的默认美学geom,比如我想要红点而不是黑点.

这个答案我知道我们可以改变geom使用该函数的默认值,update_geom_default但我想知道是否有可能只在我们调用时改变颜色theme_red_dots

我天真尝试的例子:

library(ggplot2)

theme_red_dots <- function(...) {
  update_geom_defaults("point", list(colour = "red"))
  theme_minimal() +
    theme(...)
}
Run Code Online (Sandbox Code Playgroud)

看起来不错:

ggplot(mtcars, aes(mpg, disp)) + 
  geom_point() + 
  theme_red_dots()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是当我打电话时,我希望这些点再次变成黑色

ggplot(mtcars, aes(mpg, disp)) + 
  geom_point()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

提前致谢!


以下是我认为这可能有用的原因示例.我们可以panel.background很容易地变成黑色,但如果我们不将美学与颜色相映射,这将使得无法看到这些点.(theme_black当然可以讨论这方面的用处,但我想避免对此进行争论.)

theme_black <- function(...) {
  theme_minimal() +
    theme(panel.background = element_rect(fill = "black")) +
    theme(...)
}

# update_geom_defaults("point", list(colour = "black"))
ggplot(mtcars, aes(mpg, disp)) + 
  geom_point() + 
  theme_black()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

更改内部点的颜色geom_point()是一个选项(请参阅@ zx8754答案),但这需要用户theme_black()更改它,而我想知道是否有办法在内部执行此操作 …

themes r ggplot2

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

在“R”中的“ggalt::geom_dumbbell”中为哑铃图添加传统图例

如何向使用ggalt::geom_dumbbellin创建的哑铃图添加传统图例R

这个问题有一个图表内图例的答案。如何映射美学以获得侧面/底部点的单独图例?

library(ggalt)

df <- data.frame(trt=LETTERS[1:5], l=c(20, 40, 10, 30, 50), r=c(70, 50, 30, 60, 80))

ggplot(df, aes(y=trt, x=l, xend=r)) + 
  geom_dumbbell(size=3, color="#e3e2e1", 
                colour_x = "red", colour_xend = "blue",
                dot_guide=TRUE, dot_guide_size=0.25) +
  theme_bw()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

plot r data-visualization ggplot2 ggalt

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

识别并计算法术(每组中的特殊事件)

我正在寻找一种有效的方法来识别时间序列中的咒语/奔跑。在下图中,前三列是我所拥有的,第四列spell是我要计算的。我已经尝试使用dplyrleadlag,但过于复杂。我已经尝试过,rle但无处可去。

在此处输入图片说明

代表

df <- structure(list(time = structure(c(1538876340, 1538876400, 
1538876460,1538876520, 1538876580, 1538876640, 1538876700, 1538876760, 1526824800, 
1526824860, 1526824920, 1526824980, 1526825040, 1526825100), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), group = c("A", "A", "A", "A", "A", "A", "A", "A", "B", 
"B", "B", "B", "B", "B"), is.5 = c(0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1)), 
class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -14L))
Run Code Online (Sandbox Code Playgroud)

我更喜欢一个tidyverse解决方案。 …

grouping r time-series dataframe dplyr

8
推荐指数
2
解决办法
375
查看次数

ggpubr 未在 ggdotchart 中创建多个条形图

利用 中的示例包代码ggpubr,该ggdotchart函数不会创建单独的段,如示例中所示,而是只有一个段,尽管点似乎放置在正确的方向。有谁对可能出现的问题有任何提示吗?我认为这可能是由于 tibbles vs. df 等因素造成的,但我一直无法确定问题所在。

代码:

df <- diamonds %>%
  filter(color %in% c("J", "D")) %>%
  group_by(cut, color) %>%
  summarise(counts = n()) 

ggdotchart(df, x = "cut", y ="counts",
           color = "color", palette = "jco", size = 3, 
           add = "segment", 
           add.params = list(color = "lightgray", size = 1.5),
           position = position_dodge(0.3),
           ggtheme = theme_pubclean()
           )
Run Code Online (Sandbox Code Playgroud)

预期输出为: 在此输入图像描述

但我得到的是: 在此输入图像描述

r ggplot2 ggpubr

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

在每个字母后面的字符串中添加数字

我有几个固定格式的字符串.

格式是一个字母后跟一个数字,例如A3B1C7D1.

但是,如果字母后面的数字是1,则该字符串将写为A3BC7D.

我想要做的是插入数字1,并将字符串转换A3BC7DA3B1C7D1.

我的示例数据是

strings <- c("A", "A3BC3", "A2B1C")
Run Code Online (Sandbox Code Playgroud)

我想得到的是:

strings_new <- c("A1", "A3B1C3", "A2B1C1")
Run Code Online (Sandbox Code Playgroud)

非常感谢!

regex string r

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

什么是“拥抱运算符”`{{ }}`?

我刚刚在tidyverse 风格指南{{ }}2.2.3 节中遇到了“拥抱运算符” 。

{{ }}R 中的拥抱运算符有什么作用?

r tidyverse rlang

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

每隔n个字符拆分字符串新列

假设我有一个像这样的数据框,带有字符串向量var2

var1  var2
1     abcdefghi 
2     abcdefghijklmnop
3     abc 
4     abcdefghijklmnopqrst
Run Code Online (Sandbox Code Playgroud)

将每n个字符的var2拆分为新列的最有效方法是什么,直到每个字符串结束为止,

例如,如果每4个字符,输出将如下所示:

var1  var2                  new_var1  new_var2 new_var3  new_var4  new_var5
1     abcdefghi             abcd      efgh     i 
2     abcdefghijklmnop      abcd      efgh     ijkl      mnop 
3     abc                   abc
4     abcdefghijklmnopqrst  abcd      efgh     ijkl      mnop      qrst 
Run Code Online (Sandbox Code Playgroud)

stringr包?使用"str_split_fixed"

或使用正则表达式:

gsub("(.{4})", "\\1 ", "abcdefghi")
Run Code Online (Sandbox Code Playgroud)

根据var2的长度创建转到new_var_n的新列的容量,例如可以是10000个字符.

substring r gsub stringr

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

计算相同长度向量中的连续元素

如果我有一个矢量

"a": 0 0 1 1 1 0 0 0 0 1 1 0 0 0
Run Code Online (Sandbox Code Playgroud)

如何生成包含连续元素数的相同长度的向量,如下所示:

"b": 2 2 3 3 3 4 4 4 4 2 2 3 3 3
Run Code Online (Sandbox Code Playgroud)

我试过了,但我没有设法以这种方式伸展它.

r vector count sequence run-length-encoding

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

如何在ggplot中添加带有标签的水平虚线

我已经绘制了一个线图。我在图上添加了一条水平线。如何取水平线红色虚线?

# Sample Data 

library(tidyverse)
Month= c("Jan","Feb","Mar","Apr","May","Jun")
a = c(11,10,9,8,4,8)

test= data_frame(Month,a) 
test$cum_total <- cumsum(test$a)

test$Month <- factor(test$Month, month.abb)

# ggplot

ggplot(data=test, aes(x=Month, y=cum_total, group=1)) +
  geom_line()+
  geom_point()+
  geom_hline(yintercept=40)+
  annotate("text", x = "Feb", y = 40, label = "Previous Level", vjust = -0.5)
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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