R 使用ggplot2有条件地环绕数据图
关于使用R 使用ggplot2有条件地环绕数据图,r,plot,ggplot2,R,Plot,Ggplot2,关于使用ggplot2绘图,我有几个问题。 我已经使用了下面的命令来使用R为数据点着色 library(ggplot2) df <- read.csv(file="c:\\query2.csv") ggplot( df,aes( x = Time,y ,y = users,colour = users>40) ) + geom_point() 库(ggplot2) df 40))+geom_点() 我的问题是:我应该如何画一条连接数据点的连续线,以及如何围绕用户>40的数据点旋
ggplot2
绘图,我有几个问题。
我已经使用了下面的命令来使用R为数据点着色
library(ggplot2)
df <- read.csv(file="c:\\query2.csv")
ggplot( df,aes( x = Time,y ,y = users,colour = users>40) ) + geom_point()
库(ggplot2)
df 40))+geom_点()
我的问题是:我应该如何画一条连接数据点的连续线,以及如何围绕
用户>40
的数据点旋转?要连接这些点,请使用geom_line
(如果这不能满足您的需要,请解释您试图实现的目标)
我没有使用geom_Encrocle
,但另一个选项是使用填充标记并删除填充来创建圆。以下是一个示例,使用内置的mtcars
数据框进行说明:
ggplot(mtcars, aes(wt, mpg)) +
geom_point() +
geom_point(data=mtcars[mtcars$mpg>30,],
pch=21, fill=NA, size=4, colour="red", stroke=1) +
theme_bw()
pch=21
是填充标记之一(有关其他可用点标记的更多信息,请参见?pch
)。我们设置fill=NA
以移除填充<代码>笔划设置圆边框的厚度
更新:使用上述示例向此图表添加一条线:
ggplot(mtcars, aes(wt, mpg)) +
geom_line() +
geom_point() +
geom_point(data=mtcars[mtcars$mpg>30,],
pch=21, fill=NA, size=4, colour="red", stroke=1) +
theme_bw()
但是,如果(就像我在这个图的原始代码中一样)您将
aes
语句放在geom
中,而不是在ggplot
的初始调用中,那么您还需要在geom\u线
中包含aes
语句。要连接点,请使用geom\u线
(如果这还不能满足你的需要,请解释一下你想要实现的目标)
我没有使用geom_Encrocle
,但另一个选项是使用填充标记并删除填充来创建圆。下面是一个示例,使用内置的mtcars
数据框进行说明:
ggplot(mtcars, aes(wt, mpg)) +
geom_point() +
geom_point(data=mtcars[mtcars$mpg>30,],
pch=21, fill=NA, size=4, colour="red", stroke=1) +
theme_bw()
pch=21
是填充标记之一(有关其他可用点标记的更多信息,请参见?pch
)。我们设置fill=NA
以删除填充。stroke
设置圆边界的厚度
更新:使用上述示例向此图表添加一条线:
ggplot(mtcars, aes(wt, mpg)) +
geom_line() +
geom_point() +
geom_point(data=mtcars[mtcars$mpg>30,],
pch=21, fill=NA, size=4, colour="red", stroke=1) +
theme_bw()
但是,如果(就像我在这个图的原始代码中一样)您将
aes
语句放在geom
中,而不是在对ggplot
的初始调用中,然后您还需要在geom\u行
中包含aes
语句。我们可以从Github版本的ggalt
包中获得可复制的示例吗可能会有帮助:我们能得到可复制的示例吗?ggalt
软件包的Github版本中的geom_enclude
可能会有帮助:非常感谢您的快速回复。我已经尝试了以下命令。ggplot(df)+geom_point(aes(df$Time,df$Users))+geom_point(data=df[df$Users>20],aes(df$Time,df$Users),pch=21,fill=NA,size=4,color=“red”,stroke=1)。但是,最后出现了这个错误“error in[.data.frame
(df,df$Users>20):未定义的列被选中”。在CSV文件中,Users列在那里,我可以生成没有条件的图形,data=df[df$Users>20]。您遗漏了一个逗号。它应该是data=df[df$Users>20,]
。在数据帧的df[,]
表示法中,逗号前的表达式表示行选择;逗号后的表达式表示列选择(如果逗号后没有任何内容,则包括所有列)。但是如果您输入的表达式中没有逗号(如在代码中),R假定这表示列选择(因为数据帧是一种特殊的列表
,这是选择列表
元素的一种方法)。df$Users>20
生成的逻辑向量比数据中的列数长。这会产生错误,因为它引用的列不存在。此外,geom_点(aes(df$Time,df$Users))
应该是geom_点(aes(Time,Users))
和其他geom一样。不要在aes
中重复数据帧名称。数据帧要么在数据参数中进入geom,例如geom_点(data=df,aes(Time,Users))
要么在最初调用ggplot时进入ggplot,例如ggplot(df)
或ggplot(df,aes(Time,Users))
。我们要求回答的原因之一(正如@BenBolker在对您的问题的评论中所做的那样)通过让我们准确地了解您的问题并提供针对您的具体问题和背景定制的代码,可以节省时间。这避免了在答案必须使用不同的数据或代码时经常需要的所有来回提问,因为没有可复制的示例可供使用。非常感谢您的快速回复。我没有按如下方式执行命令。ggplot(df)+geom_point(aes(df$Time,df$Users))+geom_point(data=df[df$Users>20],aes(df$Time,df$Users),pch=21,fill=NA,size=4,color=“red”,stroke=1)。但是,最后出现了这个错误“error in[.data.frame
(df,df$Users>20):未定义的列被选中”。在CSV文件中,用户列在那里,我可以生成没有条件的图形,data=df[df$Users>20]。您缺少了一个逗号。它应该是data=df[df$Users>20,]
。在数据帧的df[,]
符号中,逗号前的表达式表示行选择;逗号后的表达式表示列选择(如果逗号后没有任何内容,则所有列都包括在内)。但是如果您输入了一个不带逗号的表达式(如在代码中),R会假定这是指列选择(因为数据框是一种特殊的列表
,这是选择列表
元素的一种方法).df$Users>20
生成的逻辑向量大于数据中的列数。这会产生错误,因为它引用的列不存在。此外,geom_点(aes(df$Time,df$Users))
应该是geom_点(aes(Time,Users))
和其他几何图形相同。不要在aes中重复数据帧名称。aes
。数据帧在数据框中