我用来ggplot生成带有拟合线的散点图,如下所示
ggplot(df, aes(x=colNameX, y=colNameY)) +
geom_point() +
geom_smooth(method=loess, se=T, fullrange=F, size=1) + ylim(0,5)
Run Code Online (Sandbox Code Playgroud)
鉴于此,想要将上面概括为一个采用以下参数的函数
scatterWithRegLine = function(df, xColName, yColName, regMethod, showSe, showFullrange, size, yAxisLim) {
# How should I use the variables passed into the function above within ggplot
}
Run Code Online (Sandbox Code Playgroud)
这样我就可以按如下方式调用该函数
scatterWithRegLine(df, "mpg", "wt", "loess", TRUE, FALSE, 1, c(0,5))
Run Code Online (Sandbox Code Playgroud) 抱歉,如果这是一个重复的问题,但我尝试过的其他答案并未产生我想要的情节。
我想根据该值是正值还是负值(我称之为“阶段”)对该图进行颜色编码。
当 geom_line() 达到 0 的上方或下方时,我希望它的颜色为“正”或“负” - 我认为以下方法可行,但似乎不起作用。有人能告诉我哪里出了问题吗?谢谢。
] 1
structure(list(Date = c(1876, 1877, 1878, 1879, 1880, 1881),
value = c(4.95, -10.0416666666667, 2.95, 12.85, 7.8, -4.76666666666667
), phase = structure(c(3L, 1L, 3L, 3L, 3L, 1L), .Label = c("negative",
"neutral", "positive"), class = "factor")), row.names = c(NA,
-6L), class = c("data.table", "data.frame"), .internal.selfref = <pointer: 0x7ffb06817ce0>)
Run Code Online (Sandbox Code Playgroud)
## create a column to determine if the phase is negative, positive or neutral i.e. 0
dd_avg$phase<-factor(sign(dd_avg$value), (-1):1, c('negative', 'neutral', 'positive'))
dd_avg …Run Code Online (Sandbox Code Playgroud) 我正在尝试绘制某个平均值的正态分布密度。问题是图例显示矩形而不是线条。输出如下:
如何解决这个问题?这是我的代码:
library(dplyr)
library(ggplot2)
library(tidyr)
n=100;kseq<-c(1.5,2,3,5,7)
df1<-matrix(0,nrow=n,ncol=length(kseq))
for(i in 1:length(kseq)){
df1[,i]<-rnorm(n,kseq[i])
}
colnames(df1)<-paste("k=",kseq,sep="")#paste("v",1:length(kseq),sep="")
df1<-as.data.frame(df1)
df2<-df1 %>% pivot_longer(cols=1:5, names_to = "group",values_to = "value")
df2<- df2 %>% mutate( groupname=case_when(
group=="v1"~"k=1.5",
group=="v2"~"k=2",
group=="v3"~"k=3",
group=="v4"~"k=5",
group=="v5"~"k=7"))
ggplot(df2,aes(x=value, linetype=group)) + geom_density(lwd=1.05) +
labs(x="",y="",main="jhfu")+ labs(linetype='') +
theme(legend.key.size = unit(1.5, 'cm'),legend.text = element_text(size=15),
legend.justification = c(1, 0))+
scale_linetype_manual(labels = colnames(df1), values = c(4,1,5,2,3)) +
theme_light()
Run Code Online (Sandbox Code Playgroud) 我需要一些帮助来将四个单独的图合并在一个页面上(单个图)。我使用相同的代码但使用不同的数据组绘制了四个不同的图。我需要在一页上绘制所有四个图。
library(ggpubr)
library(rstatix)
library(xlsx)
df<-read.xlsx("umar.xlsx", header = T, 1)
# Statistical test
######## Figure 1 ########
stat.test <- df %>%
t_test(Moisture_content ~ substrate) %>%
add_significance()
stat.test
# Box plots with p-values
bxp <- ggboxplot(df, x = "substrate", y = "Moisture_content", fill = "substrate",
palette = c("#00AFBB", "#E7B800"), width = 0.35)
stat.test <- stat.test %>% add_xy_position(x = "substrate")
bxp +
stat_pvalue_manual(stat.test, label = "p = {p}") +
scale_y_continuous(expand = expansion(mult = c(0.05, 0.1)))+
theme(
aspect.ratio = 3
)
######## Figure 2 …Run Code Online (Sandbox Code Playgroud) 我正在尝试旋转 R 中 ggplot 上的注释,类似于此问题,但使用带有背景的标签几何图形。
geom = "text"使用与或geom_text一起使用geom = 'label'的代码geom_label会导致注释不旋转。
fake = data.frame(x=rnorm(100), y=rnorm(100))
ggplot(data = fake, aes(x = x, y = y)) +
geom_point() +
geom_vline(xintercept = -1, linetype = 2, color = "red") +
# annotate(geom = "text", x = -1, y = -1, label = "Helpful annotation", color = "red",
# angle = 90)
annotate(geom = "label", x = -1, y = -1, label = "Helpful annotation", color …Run Code Online (Sandbox Code Playgroud) 我试图想出一种以特定方式可视化一些李克特量表数据的方法。我什至不知道如何伪造它的样子,所以我希望我的解释足够了。
我有以下(假)数据:
n 个问题,每个问题有 5 个答案(非常同意、同意、不同意、非常不同意、不知道)
我想沿着中心轴可视化数据(最好使用 ggplot),以便两个“同意”答案位于左侧,两个“不同意”答案位于右侧,然后位于一个单独的块上一侧,代表“不知道”的块。它应该大致如下所示:
Q1: *****++++++++|------!! ?????
Q2: ****++++++|----!!!!!! ???????
Q3: **++++++|---!!! ??????????
*: strongly agree, +: agree, -: don't agree, !:strongly disagree, ?: don't know
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,这种表示方式允许比较同意和不同意的实际数量,而不会隐藏有多少“不知道”。我陷入困境的是如何为不知道的情况创建第二个元素。有任何想法吗?
以下是一些虚假数据:
structure(list(Q = structure(1:3, .Label = c("Q1", "Q2", "Q3"
), class = "factor"), SA = c(25, 18, 12), A = c(30, 25, 15),
DA = c(25, 20, 25), SDA = c(10, 18, 25), DK = c(10, 19, 23
)), row.names = c(NA, -3L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud) 我想用光谱颜色填充曲线下的区域,得到这样的图。
这就是我尝试过的
ggplot(bq, aes(x=w.length, y=s.e.irrad)) +
geom_segment(aes(xend=w.length, yend=0, colour=abs(w.length)^0.7*sign(w.length))) +
geom_line() +
scale_colour_gradient2(low=scales::muted("blue"),
mid=scales::muted("green"),
high=scales::muted("red"))
Run Code Online (Sandbox Code Playgroud)
得到这个
还尝试使用 geom_area
ggplot(bq, aes(x = w.length, y = s.e.irrad))+
geom_area(fill = "steelblue") #steelblue is for example
Run Code Online (Sandbox Code Playgroud)
但无法填充渐变
我的数据框的 x 为波长,y 为辐照度
我正在使用ks包来计算和绘制二元核密度估计。它效果很好,但我想使用 ggplot 来绘制估计值。
我可以尝试创建一个自定义函数来为 ggplot 准备数据框和其他内容,但我感觉更有经验的 R 用户可以更轻松地做到这一点。
那么,我该怎么做呢?
以下是 ks::kde 的示例场景:
data <- cbind(rnorm(100), rnorm(100))
kd <- ks::kde(data)
plot(kd, display = "slice", col = viridis::viridis(20))
plot(kd, display = "image", col = viridis::viridis(20))
plot(kd, display = "persp", col.fun = viridis::viridis)
Run Code Online (Sandbox Code Playgroud)
上面的代码应该给你以下的图。如何使用 ggplot 来绘制这些图?
编辑:我需要使用ks按包计算的估计值。提供的本机函数ggplot2使用名为 的包MASS。所以这样不行。
我想将我的数据拟合到已使用 Matlab 优化的特定函数中。
我收到以下错误:“警告消息:计算失败stat_smooth():奇异梯度”
请帮忙!这是我的 R 代码:
tibble
x y SEM
1 1 0.0342 0.00532
2 3 0.0502 0.00639
3 5 0.0700 0.0118
4 10 0.123 0.0269
5 20 0.154 0.0125
6 30 0.203 0.0190
7 40 0.257 0.0255
8 50 0.287 0.0266
9 60 0.345 0.0347
10 90 0.442 0.0398
11 120 0.569 0.0570
12 180 0.726 0.0406
13 240 0.824 0.0150
14 360 0.868 0.00821
15 1440 0.890 0.0246
tibble %>%
ggplot(aes(x, y)) +
geom_point()+
geom_errorbar(aes(ymin=y-SEM, …Run Code Online (Sandbox Code Playgroud) 我从 ggplot 中看到一些非常奇怪(且不受欢迎)的行为。我使用以下代码生成沿单个路径具有不同颜色段的绘图。
library(data.table)
library(ggplot2)
testData = fread("test_data.tsv")
ggplot(testData, aes(X, Y, color = Color, group = 1)) +
geom_path(size = 1.5) + scale_color_identity()
Run Code Online (Sandbox Code Playgroud)
(“test_data.tsv”中的数据可以在此 Pastebin中找到。)
正如你所看到的,边缘非常模糊(或者模糊,或者锯齿状,或者无论你想怎么称呼它们),我似乎无法修复它们。我尝试过以更高的 dpi 或其他图形格式(例如 pdf)导出,但没有任何效果。
每个点似乎都对齐以连接到其邻居,但实际的连接并不顺利。我认为这是使用“group = 1”参数来防止 ggplot 将所有类似颜色的区域连接在一起的产物。但是,正是出于这个原因,我无法更改该选项。
是否有我可以实施的解决此问题的方法,或者我此时是否遇到了 ggplot 的限制?