我有几个 Rscript 在远程 winXP 服务器的任务调度程序上作为计划作业运行,生成一些包含绘图的 html 页面 like this one .另见 this related question .
我注意到,当我在本地连接并运行作业时,绘图没问题。因此,当作业自行运行时(但前提是我上次登录是在本地完成的)。但是,如果我最后一次登录 - 在作业执行之前 - 通过远程桌面连接(16 位颜色质量) - 无论我在那个 session 中做了什么 - 之后运行的作业不会正确地生成那些图(在 html 页面中) .我说的是像链接中那样带有 guide_colorbar() 的图。具体来说,图例中的渐变条根本没有出现(我可以看到图例标题、数字、刻度,但只能看到背景颜色,而不是渐变色条)。
这就像 R(或 ggplot)以某种方式保留了上次桌面 session 的一些属性,并相应地渲染或不渲染该颜色条(至少这是我从我执行的测试中可以弄清楚的)。你能想出解决办法吗?
附言相同的作业会生成一些具有相似图的 pdf(通过编织 .rnw 文件),这没有任何问题。
> sessionInfo()
R version 3.1.0 Patched (2014-05-24 r65737)
Platform: i386-w64-mingw32/i386 (32-bit)
locale:
[1] LC_COLLATE=Greek_Greece.1253 LC_CTYPE=Greek_Greece.1253 LC_MONETARY=Greek_Greece.1253 LC_NUMERIC=C LC_TIME=Greek_Greece.1253
attached base packages:
[1] datasets grDevices splines graphics stats grid tcltk utils methods base
other attached packages:
[1] markdown_0.6.3 knitr_1.6 fBasics_3010.86 timeSeries_3010.97 timeDate_3010.98 MASS_7.3-33 RODBC_1.3-10 car_2.0-20
[9] sos_1.3-8 brew_1.0-6 reshape2_1.4 scales_0.2.4 ggplot2_1.0.0 svSocket_0.9-57 TinnR_1.0-5 R2HTML_2.2.1
[17] Hmisc_3.14-4 Formula_1.1-1 survival_2.37-7 lattice_0.20-29
loaded via a namespace (and not attached):
[1] cluster_1.15.2 colorspace_1.2-4 digest_0.6.4 evaluate_0.5.5 formatR_0.10 gtable_0.1.2 latticeExtra_0.6-26
[8] munsell_0.4.2 nnet_7.3-8 plyr_1.8.1 proto_0.3-10 RColorBrewer_1.0-5 Rcpp_0.11.1 stabledist_0.6-6
[15] stringr_0.6.2 svMisc_0.9-70 tools_3.1.0
更新(网络管理员的评论)
我不是 R 程序员,但我是系统程序员 – George Dontas 的技术员和同事。看到上述问题后,我必须发表以下评论。远程桌面仅用于管理目的,没有理由解决导致域(流量)问题的情况,使 session 比分辨率和/或颜色深度所需的更重......问题肯定与 R、桌面 session 和屏幕调整有关……正如 George 所说,他的工作按计划在远程服务器上运行……如果最后一个桌面 session (我的术语)在服务器本地,则运行良好……。 .. ......如果他连接(不做任何事情)到带有远程桌面的所述服务器几秒钟,问题就会出现......当计划的作业运行时......即使远程 session 关闭了很长时间......。 R 必须检查与运行作业的计算机上的最后一个桌面 session 相关的内容……有人对此有答案吗……???
最佳答案
光栅图形在某些环境中不可用。
ggplot2 的 colorbar guide 提供光栅和非光栅版本。
如果您未能绘制颜色条,请尝试 guide_colorbar(..., raster = FALSE)。
默认行为是 raster = TRUE。
关于windows - ggplot-s 是否依赖于上一个桌面 session 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25140729/
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>
我希望我的UserPrice模型的属性在它们为空或不验证数值时默认为0。这些属性是tax_rate、shipping_cost和price。classCreateUserPrices8,:scale=>2t.decimal:tax_rate,:precision=>8,:scale=>2t.decimal:shipping_cost,:precision=>8,:scale=>2endendend起初,我将所有3列的:default=>0放在表格中,但我不想要这样,因为它已经填充了字段,我想使用占位符。这是我的UserPrice模型:classUserPrice回答before_val
我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah
这个问题在这里已经有了答案:Checktoseeifanarrayisalreadysorted?(8个答案)关闭9年前。我只是想知道是否有办法检查数组是否在增加?这是我的解决方案,但我正在寻找更漂亮的方法:n=-1@arr.flatten.each{|e|returnfalseife
我有一个具有一些属性的模型:attr1、attr2和attr3。我需要在不执行回调和验证的情况下更新此属性。我找到了update_column方法,但我想同时更新三个属性。我需要这样的东西:update_columns({attr1:val1,attr2:val2,attr3:val3})代替update_column(attr1,val1)update_column(attr2,val2)update_column(attr3,val3) 最佳答案 您可以使用update_columns(attr1:val1,attr2:val2
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象