我想在hline情节中添加一个图例.
我子集的头部看起来像这样
Site Date Al
1 Bo6 2014-10-07 152.1
2 Bo1 2014-10-07 157.3
3 Bo3 2014-10-07 207.1
4 Bo4 2014-10-07 184.3
5 Bo5 2014-10-07 23.2
13 Bo6 2014-10-14 96.8
Run Code Online (Sandbox Code Playgroud)
我的代码如下:
require(ggplot2)
require(reshape2)
require(magrittr)
require(dplyr)
require(tidyr)
setwd("~/Documents/Results")
mydata <- read.csv("Metals sheet Rwosnb5.csv")
mydata <- read.csv("Metals sheet Rwosnb5.csv")
L <- subset(mydata, Site =="Bo1"| Site == "Bo2"| Site == "Bo3"| Site == "Bo4"| Site == "Bo5" | Site == "Bo6", select = c(Site,Date,Al))
L$Date <- as.Date(L$Date, "%d/%m/%Y")
I <- ggplot(data=L, aes(x=Date, y=Al, colour=Site)) …Run Code Online (Sandbox Code Playgroud) 我试图在数据集的2个不同方面生成2种不同颜色的不同geom_vlines.我这样做是为了强调两个不同方面的方法.
这是数据集:
Pclass Sex Age SibSp Parch Fare Cabin Embarked Survived
3 male 22 1 0 7.25 S 0
1 female 38 1 0 71.2833 C85 C 1
3 female 26 0 0 7.925 S 1
1 female 35 1 0 53.1 C123 S 1
3 male 35 0 0 8.05 S 0
1 male 54 0 0 51.8625 E46 S 0
Run Code Online (Sandbox Code Playgroud)
这是代码:
g<-ggplot(data = train3, aes(x = Age, y = Survived, colour = factor(Pclass)))
g<-g+facet_wrap(~Sex)
g<-g+geom_point(size = 4, alpha …Run Code Online (Sandbox Code Playgroud) 以下代码会导致图例中出现不需要的交叉效应。
ggplot() +
geom_vline(aes(xintercept=1,colour="vertical"), show.legend = NA) +
geom_hline(aes(yintercept=1,colour="horizontal"), show.legend = NA)
Run Code Online (Sandbox Code Playgroud)
我读了几篇文章,说添加show.legend = NA可以使这种效果消失,但这对我来说不起作用。
编辑: 为避免混淆,我不希望传说消失!我只希望图例中的“十字架”消失,所以它应该显示如下项目:
和
我用一条线连接点绘制了一个图。在此图中,我想从 x 轴上的一点到与绘图线的交点绘制一条垂直线。在交点处,我想绘制一条到 Y 轴的水平线。我搜索了几个网站、论坛和教程,但仍然做不到。有什么帮助吗?
library(ggplot2)
X <- 1:5
Y <- c(2, 6, 4, 7, 12)
DF <- data.frame(X, Y)
ggplot(data = DF,
aes(x = X,
y = Y)) +
geom_point() +
geom_line() +
geom_vline(xintercept = 4.5,
linetype = 2)
Run Code Online (Sandbox Code Playgroud)
到目前为止的结果:
期望结果的示例:
昨天和今天在网上搜索后,我获得图例工作的唯一方法是遵循“Brian Diggs”在这篇文章中的解决方案: 将图例添加到 ggplot2 线图
这给了我以下代码:
library(ggplot2)
ggplot()+
geom_line(data=myDf, aes(x=count, y=mean, color="TrueMean"))+
geom_hline(yintercept = myTrueMean, color="SampleMean")+
scale_colour_manual("",breaks=c("SampleMean", "TrueMean"),values=c("red","blue"))+
labs(title = "Plot showing convergens of Mean", x="Index", y="Mean")+
theme_minimal()
Run Code Online (Sandbox Code Playgroud)
如果我删除 的颜色,一切都会正常,但是如果我在不是实际颜色hline的颜色中添加一个值(例如),我会得到一个错误,它不是颜色(仅适用于)。添加一个像传奇这样常见的东西怎么会成为一个大问题呢?还有更简单的方法吗?hline"SampleMean"hline
创建原始数据:
#Initial variables
myAlpha=2
myBeta=2
successes=14
n=20
fails=n-successes
#Posterior values
postAlpha=myAlpha+successes
postBeta=myBeta+fails
#Calculating the mean and SD
myTrueMean=(myAlpha+successes)/(myAlpha+successes+myBeta+fails)
myTrueSD=sqrt(((myAlpha+successes)*(myBeta+fails))/((myAlpha+successes+myBeta+fails)^2*(myAlpha+successes+myBeta+fails+1)))
#Simulate the data
simulateBeta=function(n,tmpAlpha,tmpBeta){
tmpValues=rbeta(n, tmpAlpha, tmpBeta)
tmpMean=mean(tmpValues)
tmpSD=sd(tmpValues)
returnVector=c(count=n, mean=tmpMean, sd=tmpSD)
return(returnVector)
}
#Make a df for the data
myDf=data.frame(t(sapply(2:10000, simulateBeta, postAlpha, postBeta)))
Run Code Online (Sandbox Code Playgroud) geom_hline()我使用和创建了一个散点图geom_vline(),该图很好,但图例条目不是我想要的显示方式。图例中的(vline恢复)和hline(阈值)是相互交叉的,令人困惑。我希望恢复图例条目为橙色垂直线,阈值图例条目为水平黑线。
我尝试了其他帖子中建议的几件事,但guide_legend(override.aes())要么show.legend = F更改了上面“类型”部分的图例条目(它删除了行并保留彩色圆圈),要么只是删除了其中一行的图例条目。
这是我当前的代码:
\nggplot(data = tst_formule[tst_formule$River != "Roya",], aes(x=Year, y = BRI_adi_moy_transect, shape = River, col = Type)) + \n geom_point(size = 3) + \n geom_errorbar(aes(ymin = BRI_adi_moy_transect - SD_transect, ymax = BRI_adi_moy_transect + SD_transect), width = 0.4) + \n scale_shape_manual(values = c(15, 16, 17)) +\n scale_colour_manual(values = c("chocolate1", "darkcyan")) + \n geom_vline(aes(xintercept = Restauration_year, linetype = "Restoration"), colour = "chocolate1") + \n …Run Code Online (Sandbox Code Playgroud) 我试图将颜色变量映射到geom_hline,但似乎不像其他几何一样工作.在每种情况下,这些都不会产生固定的黑线.
ggplot(data.frame(x=0,y=0,series="ABC"),aes(x,y,color=series))) +
geom_point() +
geom_hline(yintercept=0,show.legend = TRUE)
ggplot(data.frame(x=0,y=0),aes(x,y)) +
geom_point() +
geom_hline(yintercept=0,aes(color="ABC"),show.legend = TRUE)
Run Code Online (Sandbox Code Playgroud)
这是一个错误,还是有一些我缺少的语法?
在下面的代码中,我p1使用来自df1. 我想在score中每个项目的值处添加一条水平线df2,并使用列中包含的每个项目的相应十六进制代码为每条线着色item_hexcode。
我认为将十六进制代码传递给 ggplot 以确定每行的颜色会很简单,但我似乎无法弄清楚如何去做。我尝试的每种方法要么抛出错误,要么似乎将十六进制代码视为因子的字符串/级别。
谁能指出我哪里出错了?
library(tidyverse)
# create example dataframes
set.seed(123)
df1 <- tibble(x = 1:5, y = (sample(200:300, 5, replace = TRUE)/100))
df2 <- tibble(item = c("a", "a", "b", "c", "b"),
score = c(2.58, 2.63, 2.45, 2.13, 2.29),
item_hexcode = c("#DA020E", "#DA020E", "#034694", "#7CFC00", "#034694"))
# initial plot
p1 <- ggplot(df1, aes(x, y)) + geom_line() + ylim(2, 3)
p1
# overlay horizontal lines on first plot, and colour …Run Code Online (Sandbox Code Playgroud) x 轴和 y 轴根据 ggplot 设置的特定间隔进行标记。
如果将水平线或垂直线添加到图中,目标是在该线的精确值处标记 x 或 y 轴。
如何才能做到这一点?