所以我有这个R脚本可以生成带有每个点标签的散点图.是这样的:
img1<-"http://blog.gettyimages.com/wp-content/uploads/2013/01/Siberian-Tiger-Running-Through-Snow-Tom-Brakefield-Getty-Images-200353826-001-628x419.jpg"
img2<-"http://blog.gettyimages.com/wp-content/uploads/2013/01/Hurricane-Sandy-Andrew-Burton-Getty-Images-154986556.jpg"
imgdata<-data.frame(c(img1,img2,img1,img2,img1,img2,img1,img2,img1,img2))
colnames(imgdata)<-"images"
txtdata<-data.frame(c("A","B","C","D","E","F","G","H","I","J"))
plotdata<-data.frame(seq(1:10),seq(11:20),txtdata,imgdata)
colnames(plotdata)<-c("var1","var2","texts","images")
ggplot(data=plotdata, aes(plotdata[,1],plotdata[,2])) +
geom_point(data=plotdata, aes(plotdata[,1],plotdata[,2])) +
geom_text(aes(label=plotdata$points,size=2, hjust=2))
Run Code Online (Sandbox Code Playgroud)
这给出了散点图,其中每个点标记为"A","B","C"......等.
我想要做的几乎是相同的,除了文本之外,我想用图像在向量或数据框的链接中标记每个点(在本例中为"imgdata").请注意,我选择这些图像只是作为例子; 我有更多,所以我无法手动下载它们.
我有一个向量v,我想找到R中向量元素的第一个变化的索引.我该怎么做?例如
v = c(1, 1, 1, 1, 1, 1, 1, 1.5, 1.5, 2, 2, 2, 2, 2)
Run Code Online (Sandbox Code Playgroud) 如果"我的朋友"犯了在RStudio中输入以下代码的愚蠢错误,我将如何(我的意思是,他!)突破循环(不重新启动R)?
while (TRUE) readline()
Run Code Online (Sandbox Code Playgroud) 我有一个如下所示的数据框:
a b
1 x 8
2 x 6
3 y 3
4 y 4
5 z 5
6 z 6
Run Code Online (Sandbox Code Playgroud)
我想把它变成这个:
x y z
1 8 3 5
2 6 4 6
Run Code Online (Sandbox Code Playgroud)
但是打电话
library(tidyr)
df <- data.frame(
a = c("x", "x", "y", "y", "z", "z"),
b = c(8, 6, 3, 4, 5, 6)
)
df %>% spread(a, b)
Run Code Online (Sandbox Code Playgroud)
回报
x y z
1 8 NA NA
2 6 NA NA
3 NA 3 NA
4 NA 4 NA
5 …Run Code Online (Sandbox Code Playgroud) 我有一个辅助函数(比如说foo()),它将在各种数据框上运行,这些数据框可能包含也可能不包含指定的变量.假设我有
library(dplyr)
d1 <- data_frame(taxon=1,model=2,z=3)
d2 <- data_frame(taxon=2,pss=4,z=3)
Run Code Online (Sandbox Code Playgroud)
我想要选择的变量是
vars <- intersect(names(data),c("taxon","model","z"))
Run Code Online (Sandbox Code Playgroud)
也就是说,我想foo(d1)返回taxon,model和z列,而foo(d2)回报只是taxon和z.
如果foo包含select(data,c(taxon,model,z))则foo(d2)失败(因为d2不包含model).如果我使用select(data,-pss)然后foo(d1)同样失败.
我知道如果我退出tidyverse(只是返回data[vars])该怎么做,但我想知道是否有一个方便的方法来做(1)与某种select()帮助(tidyselect::select_helpers)或(2)与tidyeval(其中)我还没有找到时间来围绕让我的头!)
由于ggplot2产生漂亮的彩色图形,但有时需要带有图案填充的黑白图形.我想知道如何做到这一点ggplot2,比如这段代码:
ggplot(diamonds, aes(cut, fill=cut)) + geom_bar()
Run Code Online (Sandbox Code Playgroud)
编辑
R图表的图案填充是否有任何功能?
我正在编写一个回归算法,试图"捕获"框内的点.该算法试图使盒子保持尽可能小,因此通常盒子的边缘/角落通过点,这决定了盒子的大小.
问题:我需要R中框的图形输出.在2D中,可以很容易地绘制框segments(),在两点之间画一条线.所以,有4个段我可以画一个盒子:
plot(x,y,type="p")
segments(x1,y1,x2,y2)
Run Code Online (Sandbox Code Playgroud)
然后我尝试了用于3D绘图的包scatterplot3d和plot3d包.在3D中,segments()命令不起作用,因为没有其他z分量.我很惊讶,显然(对我来说)没有足够的替代3Dsegments()
在三维绘图时,有一种简单的方法可以在两点之间绘制方框/线条吗?
我有一个带有法语日期的字符向量.我想将它们转换为R中的日期格式.它似乎有效,但有一些神秘的错误.例如,R承认"30 juin 2012"而不是"30 juillet 2012":
> as.Date("30 juin 2012", format = "%d %B %Y")
[1] "2012-06-30"
> as.Date("28 février 2012", format = "%d %B %Y")
[1] "2012-02-28"
> as.Date("30 juillet 2012", format = "%d %B %Y")
[1] NA
Run Code Online (Sandbox Code Playgroud)
你有什么解释吗?
PS:我的本地设置是法语UTF8
> Sys.getlocale()
[1] "fr_FR.UTF-8/fr_FR.UTF-8/fr_FR.UTF-8/C/fr_FR.UTF-8/fr_FR.UTF-8"
Run Code Online (Sandbox Code Playgroud) 我正在研究R中的等值线,并且需要能够使用match.map()匹配状态名称.我正在使用的数据集将多个单词的名称粘在一起,如NorthDakota和DistrictOfColumbia.
如何使用正则表达式在低位字母序列之间插入空格?我已成功添加了一个空格,但无法保留指示空间位置的字母.
places = c("NorthDakota", "DistrictOfColumbia")
gsub("[[:lower:]][[:upper:]]", " ", places)
[1] "Nort akota" "Distric olumbia"
Run Code Online (Sandbox Code Playgroud) 在多面板/刻面图中,我喜欢将面板压在一起并且它们之间没有空间的可行性,例如使用theme(panel.spacing=grid::unit(0,"lines"))(Edward Tufte说这很好,因为面板间空间产生令人分心的视觉效果,以及浪费数据 -太空了,我喝了Kool-Aid的这一点.)
问题在于,取决于小平面的行/列内的值的精确范围,相邻小平面的轴标签可以重叠.例如,在此图中,顶部面板中的底部刻度标签与中间面板中的顶部刻度标签之间存在碰撞.
dd <- data.frame(x=rep(1:3,3),
y=c(0.1,0.2,0.3,
0.1,0.4,0.6,
1,2,3),
f=factor(rep(letters[1:3],each=3)))
library(ggplot2)
ggplot(dd,aes(x,y))+
facet_grid(f~.,scale="free")+
geom_point()+
theme_bw(base_size=24)+
theme(panel.spacing=grid::unit(0,"lines"))
ggsave("tmp1.png",width=4,height=6)
Run Code Online (Sandbox Code Playgroud)
我想为这个问题构建一个通用,方便的解决方案 - 将每个方面的限制扩展适当的数量(每个方面都会有所不同,因为范围是异构的)但是抑制(至少)标签和(可能)勾选标志着极端的价值观.我过去通过在其中设置专用breaks功能以超级黑客的方式做到了这一点scale_y_continuous.我可能已经考虑过其他一些方法(如果我可以让它们工作,它们会将它们作为答案发布),但我正在寻找(a)用于指定labels和/或的相当强大的通用功能breaks.
这与刻面ggplot中的Automate tick max和min不同,它只需要 facet的最大/最小值.
一般来说这很棘手,可能无法完全解决; 我想的只是消除极端标签,但如果只有两个或三个刻度标签,则会失败.可能有一个解决方案expand_limits(),但跨越方面很难做到......