当我设置函数时geom_smooth(..., se = TURE),置信区间为灰色,但我想设置一些其他颜色。
貌似是geom_smooth里面不能设置颜色的参数。我应该创建一个新的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()更改它,而我想知道是否有办法在内部执行此操作 …
如何向使用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)
我正在寻找一种有效的方法来识别时间序列中的咒语/奔跑。在下图中,前三列是我所拥有的,第四列spell是我要计算的。我已经尝试使用dplyr的lead和lag,但过于复杂。我已经尝试过,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解决方案。 …
利用 中的示例包代码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)
我有几个固定格式的字符串.
格式是一个字母后跟一个数字,例如A3B1C7D1.
但是,如果字母后面的数字是1,则该字符串将写为A3BC7D.
我想要做的是插入数字1,并将字符串转换A3BC7D为A3B1C7D1.
我的示例数据是
strings <- c("A", "A3BC3", "A2B1C")
Run Code Online (Sandbox Code Playgroud)
我想得到的是:
strings_new <- c("A1", "A3B1C3", "A2B1C1")
Run Code Online (Sandbox Code Playgroud)
非常感谢!
我刚刚在tidyverse 风格指南{{ }}2.2.3 节中遇到了“拥抱运算符” 。
{{ }}R 中的拥抱运算符有什么作用?
假设我有一个像这样的数据框,带有字符串向量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个字符.
如果我有一个矢量
"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)
我试过了,但我没有设法以这种方式伸展它.
我已经绘制了一个线图。我在图上添加了一条水平线。如何取水平线红色虚线?
# 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)