使用ggplot2
我通常使用geom_text
和类似的东西position=jitter
注释我的情节.
但是 - 对于一个不错的情节,我经常发现值得手动注释.如下:
data2 <- structure(list(type = structure(c(5L, 1L, 2L, 4L, 3L, 5L, 1L,
2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L), .Label = c("EDS",
"KIU", "LAK", "MVH", "NA*"), class = "factor"), value = c(0.9,
0.01, 0.01, 0.09, 0, 0.8, 0.05, 0, 0.15, 0, 0.41, 0.04, 0.03,
0.52, 0, 0.23, 0.11, 0.02, 0.64, 0.01), time = c(3L, 3L, 3L,
3L, 3L, 6L, 6L, 6L, 6L, 6L, 15L, 15L, …
Run Code Online (Sandbox Code Playgroud) 在ggplot中做facet我经常喜欢使用百分比而不是计数.
例如
test1 <- sample(letters[1:2], 100, replace=T)
test2 <- sample(letters[3:8], 100, replace=T)
test <- data.frame(cbind(test1,test2))
ggplot(test, aes(test2))+geom_bar()+facet_grid(~test1)
Run Code Online (Sandbox Code Playgroud)
这很容易,但如果N在方面A上与方面B不同,那么我认为比较百分比会更好,这样每个方面的总和达到100%.
你会怎么做到这一点?
希望我的问题有道理.
真诚.
这可能是难以回答的问题之一,但这里有:
我不认为我的自编程员 - 但我想:-)我已经学会了R,因为我厌倦了spss,而且因为一位朋友向我介绍了这种语言 - 所以我不是一个完全陌生的人编程逻辑.
现在我想学习python - 主要是做屏幕抓取和文本分析,还用于用Pylons或Django编写webapps.
那么:我应该如何学习使用python进行屏幕刮擦?我开始经历那些杂乱无章的文档,但我觉得很多"魔术"正在进行 - 毕竟 - 我正在努力学习,而不仅仅是做.
另一方面:没有理由重新发明轮子,如果Scrapy要屏蔽Django对网页的影响,那么毕竟值得直接进入Scrapy.你怎么看?
哦 - 顺便说一句:屏幕抓取的那种:我想要报道网站(即相当复杂和大的)来提及政治家等等 - 这意味着我需要每天,递增和递归地刮 - 我需要记录结果进入各种各样的数据库 - 这引出了一个奖励问题:每个人都在谈论非SQL数据库.我是否应该立即学会使用例如mongoDB(我认为我不需要强烈的一致性),或者我想做什么是愚蠢的?
感谢您的任何想法 - 如果这是一般被认为是一个编程问题,我道歉.
我在数据框中有以下变量:
[1] "Type" "I.alt" "idx06" "idx07" "idx08" "farve1" "farve2"
Run Code Online (Sandbox Code Playgroud)
如果我做:
dm <- melt(d, id=c("Type","I.alt"))
Run Code Online (Sandbox Code Playgroud)
我得到这些变量:
"Type" "I.alt" "variable" "value"
Run Code Online (Sandbox Code Playgroud)
其中"idx06","idx07","idx08","farve1","farve2"以"变量"表示.
但我真正想要的是这样的:
"Type" "I.alt" "variable" "value" "variable2" "value2"
Run Code Online (Sandbox Code Playgroud)
其中"farve1"和"farve2"表示在variable2和value2中.
我想要这样做的原因是,我想要的是,如果值下降则线条颜色为绿色,如果上升则为红色. 编辑:Shane已经展示了如何通过融合的两个融合来重塑数据.但是我的策略从一开始就构思错误 - 用一句话说错了.请参阅我对Shane解决方案的评论.
ggplot(dm, aes(x=variable,y=value,group=Type,col=variable2, label=Type,size=I.alt))+
geom_line()+
geom_text(data=subset(dm, variable=="idx08"),hjust=-0.2, size=2.5)+
theme_bw()+
scale_x_discrete(expand=c(0,1))+
opts(legend.position="none")
Run Code Online (Sandbox Code Playgroud)
我想我需要铸造熔化的框架 - 但我无法弄明白.数据:
d <- structure(list(Type = structure(c(8L, 21L, 23L, 20L, 6L, 14L,
3L, 24L, 2L, 28L, 32L, 22L, 15L, 29L, 1L, 17L, 18L, 33L, 25L,
13L, 30L, 11L, 26L, 9L, 12L, 4L, 5L, 27L, 16L, 19L, 10L, …
Run Code Online (Sandbox Code Playgroud) 这是一个非常基本的问题 - 但显然谷歌并不擅长搜索像"%+%"这样的字符串.所以我的问题是 - 什么时候和"%+%"和类似的使用.我猜它是一种合并?
编辑:好的 - 我相信我的问题得到了回答.%X%是某种二元运算符.所以现在我想我会谷歌知道如何/何时使用这些.我的问题部分受到昨天问题的启发 - 但只是在我在"学习R"博客上看到这篇文章之后.产生我问题的这段话是这样的:
为了做到这一点,将创建一个包含年度总计的新数据框,然后与现有数据集合并(两个数据框中的变量名称应该相同才能生效).然后我们只更改绘图所基于的数据帧.
## add total immigration figures to the plot
total <- cast(df.m, Period ~ ., sum)
total <- rename(total, c("(all)" = "value"))
total$Region <- "Total"
df.m.t <- rbind(total, df.m)
c1 <- c %+% df.m.t
Run Code Online (Sandbox Code Playgroud) 这实际上是一个新手问题 - 但基本上,我如何为某些文件类型启用模板.
基本上,我只是希望模板插入一个类别的标题,即我发现有用的一些函数,以及加载的库等.
我解释
:help templates
Run Code Online (Sandbox Code Playgroud)
我应该把它放在我的vimrc中的方式
au BufNewFile,BufRead ~/.vim/skeleton.R
Run Code Online (Sandbox Code Playgroud)
运行R脚本然后显示可能发生的事情,但显然不会:
--- Auto-Commands ---
Run Code Online (Sandbox Code Playgroud)
这可能是因为模板由命令组成(并且在skeleton.R中没有这样的命令) - 在这种情况下,我只是希望它插入一个文本标题(由skelton.R组成).
对不起,如果这个问题是令人头疼的傻瓜; - /
当我在vim/gvim中按"j"或向下箭头时,光标移动到下一行.这对编写代码很有用.
然而,当写文本时,行通常比文本长得多.因此,我不能轻易地在这个词之上得到这个词.所以在几乎所有的编辑器和文本处理器中按向上箭头HERE↑会将光标放在"单词"前面.但是在gvim中,光标移动到"代码"之间的空白行.什么时候".
我使用wrap(set:wrap)和linebreak(set:lbr).
凭借vim的所有力量 - 这必须是直截了当的吗?
我正在尝试创建一个刻面的条形图,每个方面的百分比加起来为100.这个问题的解决似乎是一个组合group
和..density..
.然而 - 在我看来,这group
与之相矛盾fill
.
数据:
test <- data.frame(
test1 = sample(letters[1:2], 100, replace = TRUE),
test2 = sample(letters[3:8], 100, replace = TRUE)
)
Run Code Online (Sandbox Code Playgroud)
这使得百分比正确:
ggplot(test, aes(test2)) +
geom_bar(aes(y = ..density.., fill=test2,group=test1)) +
facet_grid(~test1)
Run Code Online (Sandbox Code Playgroud)
您可以看到的总线fill
被覆盖:
但是,下面的代码尊重fill
但给我错误的百分比(整个图表的总和为100)(使用..density ..):
ggplot(test, aes(test2)) +
geom_bar(aes(y = ..count../sum(..count..), fill=test2)) +
facet_grid(~test1)
Run Code Online (Sandbox Code Playgroud)
相关:我的这个老问题:在一个刻面的ggplot条形图中y实验室的百分比?.
是的 - 我可以创建其他数据,但我觉得这属于表示层.实际上这感觉就像一个bug?
一周前,我会手动完成此操作:按组分组数据到新数据帧.对于每个数据帧计算意味着每个变量,然后是rbind.非常笨重......
现在,我已经了解split
和plyr
,我想必须有使用这些工具的更简单的方法.请不要证明我错了.
test_data <- data.frame(cbind(
var0 = rnorm(100),
var1 = rnorm(100,1),
var2 = rnorm(100,2),
var3 = rnorm(100,3),
var4 = rnorm(100,4),
group = sample(letters[1:10],100,replace=T),
year = sample(c(2007,2009),100, replace=T)))
test_data$var1 <- as.numeric(as.character(test_data$var1))
test_data$var2 <- as.numeric(as.character(test_data$var2))
test_data$var3 <- as.numeric(as.character(test_data$var3))
test_data$var4 <- as.numeric(as.character(test_data$var4))
Run Code Online (Sandbox Code Playgroud)
我和两个人都在玩,ddply
但是我无法生产出我想要的东西 - 即每个小组都有这样一张桌子
group a |2007|2009|
________|____|____|
var1 | xx | xx |
var2 | xx | xx |
etc. | etc| ect|
Run Code Online (Sandbox Code Playgroud)
也许d_ply
有些odfweave
输出会起作用.非常感谢投入.
ps我注意到data.frame将rnorm转换为data.frame中的因子?我怎么能避免这种情况 - 我(rnorm(100)不起作用所以我必须像上面那样转换成数字
但是有可能在刻面图上做类似的事情,这样标签样式对应于线型(aestetics),并且我可以单独注释不同的方面吗?
一些数据:
funny <- structure(list(Institution = structure(c(1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L,
3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L), .Label = c("Q-branch",
"Some-Ville", "Spectre"), class = "factor"), Type = structure(c(5L,
6L, 1L, 3L, 5L, 6L, 2L, 4L, 5L, 6L, …
Run Code Online (Sandbox Code Playgroud)