2015-06-14 1 views
0

Я хочу показать эллипс в C#. Мои коды прекрасно, когда он работает в R, но я получаю сообщение от C#, как это: «Объект является статическим, операция не допускается (Исключение из HRESULT: 0x8004000B (OLE_E_STATIC))»C#: невозможно выполнить код из R

здесь это мои коды:

df.rconn.Evaluate("library(cluster)") 
df.rconn.Evaluate("library(rrcov)") 
public void setScatter(int xAxis, int yAxis, int zAxis, List<string> variable) 
    { 

     // plot from R 
     //to show outlier with method : classic & robust Mve 
     this.comboBoxXAxis.SelectedIndex = xAxis; 
     this.comboBoxYAxis.SelectedIndex = yAxis; 
     dataform.rconn.EvaluateNoReturn("x<-X[," + xAxis + "] "); 
     dataform.rconn.EvaluateNoReturn("y<-X[," + yAxis + "] "); 
     dataform.rconn.EvaluateNoReturn("shape <- cov(X)"); 
     dataform.rconn.EvaluateNoReturn("center<- colMeans(X)"); 
     dataform.rconn.EvaluateNoReturn("d2.95 <- qchisq(0.95, df = 2)"); 
     //dataform.rconn.EvaluateNoReturn("gr<- grid(lty=3,col='lightgray', equilogs = 'TRUE')"); 
     //dataform.rconn.Evaluate("mtext('with classical (red) and robust (blue)')"); 
     dataform.rconn.EvaluateNoReturn("plot(x,y, main='Draw Ellipse ', pch=19,col='black', type='p')"); 
     dataform.rconn.EvaluateNoReturn("elp<- unname(ellipsoidPoints(shape, d2.95,center))"); 
     dataform.rconn.Evaluate(" lines(elp, col='red' , lty=7 , lwd=2)"); 
     //dataform.rconn.EvaluateNoReturn("lines(e)"); 
     //dataform.rconn.EvaluateNoReturn("lines(ellipsoidPoints([email protected], d2 = d2.95, [email protected]), col='blue', lty='7' , lwd='2') "); 
     axGraphicsDevice2.RemoveFromConnector(); 
    } 

в любом коде, который я комментирую, всегда получал ту же ошибку. Я не знаю, почему эта проблема происходит. Любая идея, как показать этот эллипс? Большое вам спасибо, потому что вы помогли мне заполнить мою диссертацию.

+0

Если вы отлаживаете его, какая строка не срабатывает? – SteveFerg

+0

Что такое rconn? какая у вас операционная система? Пожалуйста, укажите соответствующую информацию. http://stackoverflow.com/help/how-to-ask –

+0

@SteveFerg: я получаю ошибку при использовании funtion ellipsoidPoints – riu

ответ

0

Некоторые недостающие контекстуальные данные, но исходя из того, что вы предполагаете, заключается в том, что ваш «rconn» (statconnector?) Не радует, когда операции обновляют графическое устройство (строки, mtext и т. Д.).

Как мне нужно было протестировать некоторые графические материалы R из C# (с R.NET) для моих собственных целей, я использовал ваш код в качестве основы и предлагаю его в качестве обходного пути для вас. Вы найдете консольное приложение образца, который работает, используя R.NET на GitHub под: https://github.com/jmp75/rdotnet-support/tree/master/samples/DrawEllipse

скомпилированных/пробега от VS2013, Windows7 64 бита, рамок .NET 4.5.

Я заметил, что мне необязательно использовать dev.hold и dev.flush, чтобы получить интуитивные обновления.

e.Evaluate("dev.hold()"); 
e.Evaluate("mtext('with classical (red) and robust (blue)')"); 
e.Evaluate("dev.flush()"); 

Надеюсь, это поможет.

+0

Да. Я использую statconnector. Кстати, какова функция dev.hold и dev.flush? - @ j-m – riu

 Смежные вопросы

  • Нет связанных вопросов^_^