我试图通过stat_contour()我的ggplot/ ggplot2-plot 添加轮廓线.不幸的是,我无法提供应该评估点值的真实数据.但是,另一个易于复制的示例表现相同:
testPts <- data.frame(x=rep(seq(7.08, 7.14, by=0.005), 200))
testPts$y <- runif(length(testPts$x), 50.93, 50.96)
testPts$z <- sin(testPts$y * 500)
ggplot(data=testPts, aes(x=x, y=y, z=z)) + geom_point(aes(colour=z))
+ stat_contour()
Run Code Online (Sandbox Code Playgroud)
这会导致以下错误消息:
if(nrow(layer_data)== 0)return()中的错误:参数长度为零另外:警告消息:无法生成轮廓数据
该示例与stackoverflow或官方手册/教程中发布的其他示例没有什么不同,如果我提供更多规范,seeminlgy无关紧要stat_contour.看来,该函数不会像错误消息所指示的那样传递数据(-layer).
感谢您的想法和建议!
我想知道是否有办法让ggplot在绘制数据前绘制其网格线.据我所知,我可以通过使用到目前为止运作良好的theme()来轻松地格式化所有内容.但是,我找不到绘制元素的顺序选项.我可以预先在绘图中引入需要格式化的其他线条(坐标,线组等).听起来更复杂,因为它需要.所以我希望,我可以修改绘图网格本身来完成这项工作.
我通常如何绘制sf.df加载的shapefile 的数据框的示例sf:
(ggplot(sf.df, aes(x=long, y=lat))
+ geom_polygon(data=sf.df, aes(group=group, fill=NFK))
+ theme(panel.grid.major=element_line(colour="black"))
+ coord_map(xlim=c(7.08, 7.14), ylim=c(50.93, 50.96))
)
Run Code Online (Sandbox Code Playgroud)
先感谢您!
在C#的pass-by-reference-pass-by-value-concept的上下文中,我有一个关于深度和浅拷贝的一般性问题:
在C#中,需要显式创建接受指针/引用的方法,以便能够将其传递给方法.但是,至少作为参数传递给方法/构造函数的对象的行为与其他对象不同.如果没有按照此处所述进行额外的克隆,它们似乎总是通过引用传递:http://zetcode.com/lang/csharp/oopii/.
为什么对象会通过引用自动传递?在这些情况下,强制克隆过程而不是处理更像int,double,boolean等对象有什么特别的好处吗?
这是代码示例,说明我的意思:
using System;
public class Entry
{
public class MyColor
{
public int r = 0;
public int g = 0;
public int b = 0;
public double a = 1;
public MyColor (int r, int g, int b, double a)
{
this.r = r;
this.g = g;
this.b = b;
this.a = a;
}
}
public class A
{
public int id;
public MyColor color;
public MyColor hiddenColor;
public A (int id, MyColor color) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Java 中的 Vert.x 创建一个包含 websockets 的 http 服务器,同时使用 Javascript 编写客户端,而不使用 vertx.js。我避免在客户端中使用 Vert.x,因为它应该保持基于浏览器(browserfy 等工具未能成功将 Vert.x 的 CommonJS 标准转换为浏览器可以使用的代码)。
完成服务器和客户端的测试代码后,我尝试了向服务器发送消息、获取其数据并以任意响应进行应答的简单示例。服务器收到消息并能够读取内容。然而客户端只收到了一条消息,并没有得到假设的内容。客户端无法将 websocket 接收到的事件数据转换为字符串(根本没有字符串数据?)。使用indexof.js确定事件数据的字节大小,在多次改变服务器发送的内容后,大小恒定为 34 字节。我尝试在服务器端使用 writeMessage 和 write-method 将数据发送到客户端 websocket。结果保持不变。
为什么我的客户端仅在 Websocket 上接收恒定大小的数据以及如何使其工作?
感谢您的建议!
编辑:
我交换方法write并writeMessage使用writeFrame. 可以writeFrame发送二进制数据以及纯文本。通过这种方式从基于 Java 的服务器发送文本到基于 Javascript 的客户端效果很好。我仍然不知道如何在客户端处理二进制消息,但这仍然是有益的。当文本消息有效时,假定它们仍然具有相同的大小(34 字节)。我认为收到的数据对象的大小会有所不同,但看起来,它只是一个指向实际数据的对象。
------------------------------------------------
客户端代码是在使用 Java Servlet 和 websockets(成功)测试期间编写的:
var wsUri = "ws://" + document.location.host + document.location.pathname + "chat";
var websocket = new WebSocket(wsUri);
websocket.onerror = function(evt) { onError(evt) };
websocket.onopen = function …Run Code Online (Sandbox Code Playgroud) 我对Rs paste函数与数据帧的行和列选择结合使用有一个特殊的问题。似乎paste总是在它的输入参数周围加上as.numeric()或做类似的工作。
这是我在做什么的代码片段:
paste(df[1, c("entry1", "entry2")], collapse="; ")
Run Code Online (Sandbox Code Playgroud)
这将传递数据帧的第一行,其中df包含列"entry1"和的列条目"entry2"。我假设这样的输出:
"Auffuellung; Holozaen"
Run Code Online (Sandbox Code Playgroud)
相反,我收到的是传递的数据帧条目的级联数等效项(不是索引):
"1; 5"
Run Code Online (Sandbox Code Playgroud)
调用str(df[1, c("entry1", "entry2")])我的真实数据库会得到以下输出(德语,不要奇怪;)):
'data.frame': 1 obs. of 2 variables:
$ Hauptbestandteile: Factor w/ 38 levels "Auffuellung",..: 1
$ Chronografie : Factor w/ 18 levels "Devon","Famennium",..: 5
Run Code Online (Sandbox Code Playgroud)
我在这种情况下做错了什么?到现在为止,我从未遇到过paste-function 这样的问题,而且我也从未期望过类似的事情会发生。因此,如何解决该问题并获得正确的串联字符串而不是等效串联数字的输出?
先感谢您!
为了避免更大的switch-case-block,我想将(匿名)函数或方法添加到Dictionary中.这个过程已经有很多解释.但是,我试图存储的函数/方法必须采用一个引用的参数:
private static Dictionary<int, Func<ref object, string, bool>> someMethDict =
new Dictionary<int, Func<ref object, string, bool>>(){};
public static void Init ()
{
someMethDict.Add(0, someMeth);
}
public static bool someMeth (ref object obj, string param)
{
// do something
return true;
}
Run Code Online (Sandbox Code Playgroud)
此代码示例无法编译,因为ref-keyword是Dictionary-instantiation中的无效标记.
那么,我怎样才能在适当的C#中引用编译器来将这些带有引用参数的方法存储到我的Dictionary中?虽然我使用上面的Init方法,但要填写Dictionary,有没有办法在这些情况下直接用存储在其中的函数/方法实例化它?
感谢帮助!