2

我有以下代码使用我的 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
}

我的输入x是一个列表,而y是一个二维数组。我首先将x转换为数值向量,将y转换为数据框,然后将列名更改为数据框。我想绘制我的数据框(my_data$Price)的一列,但是在使用ggplot2时它不起作用。我没有收到任何错误,但我没有看到任何图表弹出。如果我尝试使用最后一行engine.Evaluate("plot(my_data$Price)")(所以正常的情节)它工作正常。我调用ggplot2的方式有什么问题吗?我已经用RStudio安装了这个库。我还应该做些什么来解决这个问题?

谢谢。

4

1 回答 1

3

据报道,提供的 R 代码不起作用。下面的代码确实成功地创建了一个 ggplot,但是该print语句创建了一个图形设备窗口,但显示不正确(空白形式)。所以是的,有一个问题,但我不知道确切的原因。我可以建议尝试的唯一解决方法是将图像输出到磁盘。

        engine.Evaluate("myChart <- ggplot(my_data, aes(x=Price, y=Quantity)) + geom_line()");
        engine.Evaluate("print(myChart)");
于 2014-10-21T21:16:41.287 回答