每次我使用ggplot创建一个情节时,我会花一点时间尝试不同的值来调整hjust和vjust
+ opts(axis.text.x = theme_text(hjust = 0.5))
Run Code Online (Sandbox Code Playgroud)
使轴标签在轴标签几乎接触轴的位置排成一行,并与轴齐平(可以说是轴对齐).但是,我真的不明白发生了什么.通常情况下,hjust = 0.5会产生如此显着不同的结果hjust = 0.6,例如,我只是通过玩弄不同的值来解决这个问题.
谁能指点我对hjust和vjust选项如何工作的全面解释?
所以我有一组这样的时间戳:
datetime<-c("2011-09-28 03:33:00", "2011-08-24 13:41:00", "2011-09-19 16:14:00", "2011-08-18 11:01:00", "2011-09-17 06:35:00", "2011-08-15 12:48:00")
Run Code Online (Sandbox Code Playgroud)
我想制作一个只有时间的直方图.我所做的是在空格处拆分列以仅获取时间,然后转换回POSIXct对象以便qplot绘制它:
library(ggplot2, stringr)
qplot(as.POSIXct(strptime((str_split_fixed(as.character(time), " ", 2)[,2]), "%H:%M:%S")))
Run Code Online (Sandbox Code Playgroud)
但是,输出as.POSIXct(strptime((str_split_fixed(as.character(datetime), " ", 2)[,2]), "%H:%M:%S"))是
"2011-10-04 03:33:00 PDT" "2011-10-04 13:41:00 PDT" "2011-10-04 16:14:00 PDT" "2011-10-04 11:01:00 PDT" "2011-10-04 06:35:00 PDT" "2011-10-04 12:48:00 PDT"
Run Code Online (Sandbox Code Playgroud)
qplot描绘了我想要的东西,但这对我来说似乎是一个令人费解的黑客.当然有更好的方法来做到这一点?我可以转换为纪元时间和情节,但我试图避免不得不这样做作为额外的一步.
更大的问题是,"我如何控制strptime的输出?"
这是我的一些数据,从文件名AttReport_all读入:
Registration.Date Join.Time Leave.Time
1 Jul 05, 2011 09:30 PM EDT Jul 07, 2011 01:05 PM EDT Jul 07, 2011 01:53 PM EDT
2 Jul 05, 2011 10:20 AM EDT Jul 07, 2011 01:04 PM EDT Jul 07, 2011 01:53 PM EDT
3 Jul 04, 2011 02:41 PM EDT Jul 07, 2011 12:49 PM EDT Jul 07, 2011 01:53 PM EDT
4 Jul 04, 2011 11:38 PM EDT Jul 07, 2011 12:49 PM EDT Jul 07, 2011 01:54 PM EDT …Run Code Online (Sandbox Code Playgroud) 我有一组具有相同列标题的数据帧,除了一些列名称大写,一些列小写.我想将所有列名称转换为小写,以便我可以创建一个大的数据帧.
我似乎无法colnames()在任何循环中工作或申请我写.附:
#create dfs
df1<-data.frame("A" = 1:10, "B" = 2:11)
df2<-data.frame("a" = 3:12, "b" = 4:13)
df3<-data.frame("a" = 5:14, "b" = 6:15)
#I have many more dfs in my actual data
#make list of dfs, define lowercasing function, apply across df list
dfs<-ls(pattern = "df")
lowercols<-function(df){colnames(get(df))<-tolower(colnames(get(df)))}
lapply(dfs, lowercols)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Error in colnames(get(df)) <- tolower(colnames(get(df))) :
could not find function "get<-"
Run Code Online (Sandbox Code Playgroud)
如何将所有数据框更改为具有小写列名?
我有一个geom_area图,看起来像这样: 
我想为x轴绿色上方的所有颜色和x轴下方的所有颜色设置红色.我的数据中有一个类别列,其中包含所有正值的字符串"正"和所有负值的"负",因此我尝试使用fill = category并使用scale_fill_manual将正数设置为绿色,将负数设置为红色,但是这给了我这个:

绿色上方的x看起来正确,但轴下方的红色不对.我已经检查了我的数据,并且没有负数据点,它在10月20日之后变成红色,并且使用geom_point代替我得到正确的颜色.
这是我的数据样本:
created score category
2011-10-19 21:26:19 2 positive
2011-10-19 22:50:33 -2 negative
2011-10-20 15:12:38 -2 negative
2011-10-20 17:19:24 -2 negative
2011-10-20 22:12:44 2 positive
2011-10-20 22:16:57 4 positive
2011-10-21 08:22:53 2 positive
Run Code Online (Sandbox Code Playgroud)
这是我用来制作情节的代码:
ggplot(data = df, aes(x = created, y = score, colour = category)) + geom_point(aes(fill = category)) + scale_fill_manual(values = c("positive" = "green", "negative" = "red"))
我的问题可能与之前的问题有关.
请原谅我的无知,但我在排序数据框时遇到了麻烦.我想指定一个有序列表,比如c("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")排序时,数据帧按列表的顺序排序.
在这个例子中,我想从头开始
Day Present Count
Fri No 164
Fri Yes 131
Mon No 142
Mon Yes 174
Sat No 39
Sat Yes 26
Sun No 44
Sun Yes 39
Thu No 191
Thu Yes 192
Tue No 184
Tue Yes 214
Wed No 343
Wed Yes 255
Run Code Online (Sandbox Code Playgroud)
结束
Day Present Count
Mon No 142
Mon Yes 174
Tue No 184
Tue Yes 214
Wed No 343
Wed Yes 255
Thu No 191 …Run Code Online (Sandbox Code Playgroud) 我有一个Python脚本改编自下载使用Python发送到Gmail的MMS电子邮件
import email, getpass, imaplib, os
detach_dir = '.' # directory where to save attachments (default: current)
user = raw_input("Enter your GMail username:")
pwd = getpass.getpass("Enter your password: ")
# connecting to the gmail imap server
m = imaplib.IMAP4_SSL("imap.gmail.com")
m.login(user,pwd)
m.select("[Gmail]/All Mail") # here you a can choose a mail box like INBOX instead
# use m.list() to get all the mailboxes
resp, items = m.search(None, 'FROM', '"Impact Stats Script"') # you could filter using the IMAP rules here …Run Code Online (Sandbox Code Playgroud) 我对R很新,但我取得了很好的进展.我已经能够将ggplot2弯曲到我的意愿,除了一件事:在我的箱线图中沿着x轴绘制分类标签的顺序.我认为这只是我对如何处理公式中数据帧范围的了解,但这里是假数据,作为一个名为df的数据帧:
Index Label Value
index1 A 1
index2 A 2
index3 A 3
index4 B 12
index5 B 11
index6 B 10
index7 C 8
index8 C 7
index9 C 9
...
index76 Z 15
index77 Z 17
index78 Z 16
Run Code Online (Sandbox Code Playgroud)
我的情节代码看起来像是qplot(df$Label, df$Value, data=df) + scale_x_discrete("Label") + opts(axis.text.x = theme_text(angle = 90, hjust = 0, size=7)) + geom_boxplot()给我我想要的东西,这是一个箱形图,显示标签A的一个盒子和胡须,一个用于B,一个用于C.但是,轴按照标签的顺序排列(盒子图1,2,3最接近原点,10,11,12位于中间,7,8,9位于图的右侧).我想要的是箱线图数据从标签平均值最高的子集开始,然后按递减顺序进行.我可以每个标签内的平均mean(df$Label[1:3])和mean(df$Label[4:6])等,但我无法弄清楚如何让图形显示如下这样的标签地块不可走,他们出现的顺序factor(df$Label)(即A,B,C沿x盒子在2,18,8),但按照标签内最高的平均值到最低值(即沿着x的B,C,An,然后是11,8,2).
我想我会创建一个由每个标签内平均值组成的向量,并以某种方式将其传递给ggplot来指定轴顺序,但我无法弄清楚如何创建矢量来开始.
我需要知道的是:
从最高到最低的顺序,获得由每个标签的平均值组成的向量的最佳方法是什么?
如何将该矢量传递给ggplot它,以便它按这些值对x轴进行排序,同时仍然使用标记x轴factor(df$Label)
我也对其他显示数据的方法持开放态度,但我认为我非常接近我想要的东西,并且给定标签内的值的均值和传播很重要.
我有三个带时间戳的测量系列,采用相同的间隔,但具有不同的实际时间戳.我想在组合图中显示这三个轨迹,但由于x轴(时间戳)在每种情况下都不同,我遇到了一些麻烦.有没有办法在不选择x轴的情况下使用和插值其他两个测量序列的y值?我对R很陌生,但我觉得我有一些明显的东西可以忽略.
例如:
Time Value
1.023 5.786
2.564 10.675
3.678 14.678
5.023 17.456
Run Code Online (Sandbox Code Playgroud)
0.787 1.765
1.567 3.456
3.011 5.879
4.598 7.768
Run Code Online (Sandbox Code Playgroud)
1.208 3.780
2.478 6.890
3.823 9.091
5.125 12.769
Run Code Online (Sandbox Code Playgroud)