Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#和R.Net不显示任何带有ggplot2的图形_C#_R_Plot_Ggplot2_R.net - Fatal编程技术网

C#和R.Net不显示任何带有ggplot2的图形

C#和R.Net不显示任何带有ggplot2的图形,c#,r,plot,ggplot2,r.net,C#,R,Plot,Ggplot2,R.net,我有以下代码,可以使用C#应用程序中的R图表绘制输入序列: public void plotGraphR_2D(List<double> x, double[,] y) { string Rpath = @"C:\Program Files\R\R-3.1.0\bin\x64"; REngine.SetEnvironmentVariables(Rpath); REngine engine = REngine.GetInstance(); var v

我有以下代码,可以使用C#应用程序中的R图表绘制输入序列:

public void plotGraphR_2D(List<double> x, double[,] y)
{
    string Rpath = @"C:\Program Files\R\R-3.1.0\bin\x64";

    REngine.SetEnvironmentVariables(Rpath);
    REngine engine = REngine.GetInstance();

    var v1 = engine.CreateNumericVector(x);
    var v2 = engine.CreateNumericMatrix(y);

    if (engine.IsRunning == false)
    {
        engine.Initialize();
    }

    engine.SetSymbol("v1", v1);
    engine.SetSymbol("v2", v2);

    engine.Evaluate("require('ggplot2')");
    engine.Evaluate("library('ggplot2')");
    engine.Evaluate("my_data <- data.frame(v2)");
    engine.Evaluate("colnames(my_data) <- c('Price', 'Quantity')");
    engine.Evaluate("myChart <- ggplot() + geom_line(data = my_data, my_data$Price)"); // THIS DOESN'T WORK
    engine.Evaluate("myChart");
    //engine.Evaluate("plot(my_data$Price)"); // THIS WORKS
}
public void plotGraphR_2D(列表x,双[,]y)
{
字符串Rpath=@“C:\ProgramFiles\R\R-3.1.0\bin\x64”;
REngine.SetEnvironmentVariables(Rpath);
REngine engine=REngine.GetInstance();
var v1=引擎.CreateNumericVector(x);
var v2=引擎.CreateNumericMatrix(y);
如果(engine.IsRunning==false)
{
engine.Initialize();
}
发动机设置符号(“v1”,v1);
发动机设置符号(“v2”,v2);
引擎。评估(“要求('ggplot2')”);
评估(“库('ggplot2')”);

engine.Evaluate(“my_data提供的R代码与报告的不一样。下面的代码确实成功创建了ggplot,但是
print
语句创建了图形设备窗口,但显示不正确(空白表单)。因此,是的,存在一个问题,但我不知道确切原因。我建议尝试的唯一解决方法是将图像输出到磁盘

        engine.Evaluate("myChart <- ggplot(my_data, aes(x=Price, y=Quantity)) + geom_line()");
        engine.Evaluate("print(myChart)");

engine.Evaluate(“myChart Try
engine.Evaluate”(“打印(myChart)”)
。我不熟悉R.net,但这可能会迫使它绘制
ggplot
绘图。我怀疑这可能与此相关:。可能显式使用aes_字符串就可以了。或者,您可以随时将代码写入脚本文件,并从R.net获取脚本的源代码…@ialm感谢您的建议。添加print()实际上解决了我的问题,我现在可以看到图表了。请将此作为答案添加,因为这可能更便于将来就同一问题进行咨询。别担心。这是一次冒险,因为我自己无法测试它。您可以添加自己的答案,记录您如何解决问题,并将其作为正确答案接受,以供将来使用s的访问者使用ame问题,或接受j-m的答案,如果它是正确的(尽管j-m的绘图似乎有不同的问题)。添加线条引擎。评估(“打印(myChart)”)解决了我的问题,我现在能够正确地看到图表。感谢您和ialm的帮助。有没有办法在ASP.Net或某些web应用程序中实现这一点?