C # и R.Net не отображают граф с ggplot2

1

У меня есть следующий код для построения моей входной серии с использованием 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 является 2-мерным массивом. Сначала я конвертирую x в числовой вектор и y в фрейм данных, а затем меняю имена столбцов на фрейм данных. Я хочу построить один из столбцов моего фрейма данных (my_data $ Price), но при использовании ggplot2 он не работает. Я не получаю никаких ошибок, но я не вижу ни одной диаграммы. Если я попытаюсь использовать последний движок строки. Evaluate ("plot (my_data $ Price)") (так обычный график), он отлично работает. Есть ли проблема с тем, как я называю ggplot2? Я установил библиотеку с RStudio. Что-нибудь еще, что я должен сделать, чтобы исправить проблему?

Благодарю.

  • 2
    Попробуйте engine.Evaluate("print(myChart)"); , Я не знаком с R.net, но это может заставить его построить график ggplot
  • 0
    Я подозреваю, что это может иметь отношение: stackoverflow.com/questions/5106782/… . Возможно, явное использование aes_string поможет. Кроме того, вы всегда можете записать код в файл сценария и просто получить сценарий из R.NET ...
Показать ещё 2 комментария
Теги:
ggplot2
plot
rdotnet

1 ответ

1
Лучший ответ

Предоставленный R-код не работает, как сообщается. Приведенный ниже код действительно создает ggplot, однако оператор print создает окно графического устройства, но показывает неправильный дисплей (пустая форма). Так что да, есть проблема, но я точно не знаю почему. Единственным обходным решением, которое я могу предложить, является попытка вывода изображений на диск.

        engine.Evaluate("myChart <- ggplot(my_data, aes(x=Price, y=Quantity)) + geom_line()");
        engine.Evaluate("print(myChart)");
  • 0
    Добавление обработчика линий. Evaluate ("print (myChart)") решает мою проблему, и теперь я могу правильно видеть график. Спасибо тебе и Ялму за помощь.
  • 1
    Есть ли способ добиться этого в ASP.Net или в каком-либо веб-приложении?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню