正如标题所说:在使用基本图形时,如何在绘图区域外绘制图例?
我想要摆弄layout并制作一个只包含图例的空图,但我会对使用基本图形设施的方式感兴趣,例如,par(mar = )为图例右侧的图例获取一些空间.
这是一个例子:
plot(1:3, rnorm(3), pch = 1, lty = 1, type = "o", ylim=c(-2,2))
lines(1:3, rnorm(3), pch = 2, lty = 2, type="o")
legend(1,-1,c("group A", "group B"), pch = c(1,2), lty = c(1,2))
Run Code Online (Sandbox Code Playgroud)
生产:

但正如所说,我希望图例在绘图区域之外(例如,图表/图表的右侧).
假设我有一个x未知长度的列表,我想从中随机弹出一个元素,以便列表之后不包含该元素.什么是最pythonic的方式来做到这一点?
我可以用一个相当不方便combincation做到这一点pop,random.randint以及len和希望看到更短的或更好的解决方案:
import random
x = [1,2,3,4,5,6]
x.pop(random.randint(0,len(x)-1))
Run Code Online (Sandbox Code Playgroud)
编辑:我想要实现的是从列表中连续弹出随机元素.(即,随机弹出一个元素并将其移动到字典中,随机弹出另一个元素并将其移动到另一个字典,...)
请注意,我使用的是Python 2.6,并且没有通过搜索功能找到任何解决方案.
我想知道是否有可能以R类似于matlabProfiler 的方式从-Code 获取配置文件.也就是说,要了解哪个行号特别慢.
到目前为止,我所取得的成绩在某种程度上并不令人满意.我曾经Rprof让我成为个人资料档案.使用summaryRprof我获得如下内容:
Run Code Online (Sandbox Code Playgroud)$by.self self.time self.pct total.time total.pct [.data.frame 0.72 10.1 1.84 25.8 inherits 0.50 7.0 1.10 15.4 data.frame 0.48 6.7 4.86 68.3 unique.default 0.44 6.2 0.48 6.7 deparse 0.36 5.1 1.18 16.6 rbind 0.30 4.2 2.22 31.2 match 0.28 3.9 1.38 19.4 [<-.factor 0.28 3.9 0.56 7.9 levels 0.26 3.7 0.34 4.8 NextMethod 0.22 3.1 0.82 11.5 ...
和
Run Code Online (Sandbox Code Playgroud)$by.total total.time total.pct self.time self.pct data.frame 4.86 68.3 0.48 6.7 rbind …
我想编写调用两种功能:plot()和legend(),这将是理想的,如果用户可以指定一些额外的参数,然后可通过要么通过plot()或legend().我知道我可以使用...以下两种函数之一实现此目的:
foo.plot <- function(x,y,...) {
plot(x,y,...)
legend("bottomleft", "bar", pch=1)
}
foo.plot(1,1, xaxt = "n")
Run Code Online (Sandbox Code Playgroud)
这传递xaxt = "n"给情节.但是有没有办法title = "legend"在legend()没有预先指定函数头中的参数的情况下将eg传递给调用?
从接受的答案中更新:我认为VitoshKa的方式是实现我想要的最优雅的方式.但是,我必须解决一些小问题,直到它按照我想要的方式工作.
首先,我检查了我要传递给legend哪个参数以及哪个参数plot.为此目的的第一步是查看哪些参数legend是独特的,legend而不是绘图和/或参数的一部分:
legend.args <- names(formals(legend))
plot.args <- c(names(formals(plot.default)), names(par()))
dput(legend.args[!(legend.args %in% plot.args)])
Run Code Online (Sandbox Code Playgroud)
我dput()在这里使用,因为该行plot.args <- c(names(formals(plot.default)), names(par()))总是调用一个我不想要的新空图.所以,我使用dput了以下函数的输出.
接下来,我不得不处理重叠的参数(通过它们获取dput(largs.all[(largs.all %in% pargs.all)])).对于一些这是微不足道的(例如x,y)等获得通过这两个功能(例如,pch).但是,在我的实际应用程序中,我甚至使用其他策略(例如,不同的变量名称adj,但在此示例中未实现).
最后, …
我有一个列表,我用随机的shuffle函数(random.shuffle)
但是,Python参考说明:
注意,即使相当小
len(x),x的排列总数也大于大多数随机数生成器的周期; 这意味着永远不会产生长序列的大多数排列.
现在,我想知道这个"相当小的len(x)"意味着什么.100,1000,10000,......
R允许通过<-和分配=.
虽然两个赋值运算符之间存在细微差别,但似乎存在广泛的共识,这<-是比较好的选择=,因为=它也被用作参数的运算符映射值,因此它的使用可能导致含糊不清的语句.以下举例说明:
> system.time(x <- rnorm(10))
user system elapsed
0 0 0
> system.time(x = rnorm(10))
Error in system.time(x = rnorm(10)) : unused argument(s) (x = rnorm(10))
Run Code Online (Sandbox Code Playgroud)
实际上,Google样式代码不允许使用=作业(请参阅此答案的评论以获得相反的观点).
我也几乎专门<-用作赋值运算符.然而,几乎在前一句中是这个问题的原因.当=我在我的代码中充当赋值运算符时,它总是偶然的,如果它导致问题,通常很难发现.
我想知道是否有办法关闭赋值=,让R抛出错误任何时候=用于赋值.
最佳地,这种行为只会发生在全局环境中的代码中,因为附加的命名空间中的代码很可能=用于赋值而不应该中断.
(这个问题的灵感来自与Jonathan Nelson的讨论)
R的命名空间机制允许一个export用户可见的功能.此外,它允许import从其他包中起作用.虽然出口的好处是显而易见的,但我在理解进口的好处方面存在更多问题.
似乎有一个好处是,可以使用其他软件包中的函数而无需附加软件包,从而节省内存.这在写作R扩展手册的1.6.4节中有所例证.
但是,导入功能必须具有其他好处.特别是,第1.6.6节(处理S4类)显示namespace了stats4包:
export(mle)
importFrom("graphics", plot)
importFrom("stats", optim, qchisq)
## For these, we define methods or (AIC, BIC, nobs) an implicit generic:
importFrom("stats", AIC, BIC, coef, confint, logLik, nobs, profile,
update, vcov)
exportClasses(mle, profile.mle, summary.mle)
## All methods for imported generics:
exportMethods(coef, confint, logLik, plot, profile, summary, show, update, vcov)
## implicit generics which do not have any methods here
export(AIC, BIC, nobs)
Run Code Online (Sandbox Code Playgroud)
这里导入的函数既不是S4类也不是泛型(使用import也是有意义的,如该部分中的示例所述),但是函数类似于R启动时自动加载plot的 …
今天我拿到了我的新PC(赢得7,32位)并安装了Vincelt Goulets Emacs.我做的唯一其他事情是更新组织模式.
现在,auto-fill-mode每次我启动emacs new时都会遇到困难,我讨厌这个问题.我想auto-fill-mode关闭,现在和永远.我甚至删除了我的.emacs文件,但auto-fill-mode仍然打开了.
唯一有效的解决方案是(a)讨厌的解决方法或(b)M-x auto-fill-mode每次重新开始emacs时都要输入.
我会很高兴听到任何解决方案.
要清楚,当前.emacs文件包含的唯一内容是: '(inhibit-startup-screen t)
我想有一个调用,它返回一个向量,其中包含我可以在当前R会话中调用的所有函数的名称.有谁知道如何实现这一目标?
(我想检查用户输入的变量对这个向量.我们有一些不可预知的问题,用户输入,例如,c作为变量名称)
更新:我想从当前加载的所有包中获取函数名称.
解决方案(中途):基于Joris Meys提示,lsf.str()我想出了以下函数,该函数返回一个带有所有当前可用函数名的有序向量:
getFunctionNames <- function() {
loaded <- (.packages())
loaded <- paste("package:", loaded, sep ="")
return(sort(unlist(lapply(loaded, lsf.str))))
}
Run Code Online (Sandbox Code Playgroud)
不要再看Joris Meys发表的评论,以获得更好的答案.
我正在完成论文的图表并决定(在讨论stats.stackoverflow之后),为了传递尽可能多的信息,创建下面的图表,在前景中呈现手段和在后台原始数据:

然而,仍然存在一个问题,那就是过度绘图.例如,标记点看起来像是反映了一个数据点,但事实上在该位置存在5个具有相同值的数据点.
因此,我想知道是否有办法应对overplotting base graph使用points的功能.
如果相应的点变得更暗或更厚,或者......,那将是理想的.
手动做它不是一个选择(太多的图形和点这样).此外,ggplot2也不是我想学习处理这个单一问题的原因(一个原因是我倾向于喜欢双轴不支持的ggplot2).
更新:我写了一个函数,它自动创建上面的图形,并通过添加垂直或水平抖动(或两者)来避免过度绘制:检查出来!
此功能现已作为raw.means.plot与raw.means.plot2在plotrix封装(上CRAN).