Krzysztof W.

Krzysztof W. Technical Project
Manager, Capgemini
Polska

Temat: GUI do R

Witam!
Nowa grupa, bardzo fajnie, zobaczymy jak bedzie z aktywnoscia.
Aby zachecic, rozpoczne pewien watek.
Mam na mysli pakiety do tworzenia interfejsow uzytkownika w tym systemie. Jestem na etapie szukania sposobu polaczenia zalet jezyka R jako jezyka wysokiego poziomu (operacje na wektorach, macierzach, bardzo duzy zestaw pakietow, itd...) z tworzeniem funkcjonalnych aplikacji dla uzytkownikow koncowych. W zasadzie widze tutaj dwa podejscia: napisanie procedur w R i uzycie jednego z pakietow do tworzenia GUI w R (np. RGtk2) lub napisanie aplikacji natywnie w ktoryms z jezykow (Java, C/C++) i wywolywanie funkcji bibliotecznych R poprzez pewien interfejs. Na razie skupiam sie na rozwiazaniu pierwszym i tutaj znalazlem ciekawy pakiet: gWidgets. Przyklad: http://user2007.org/program/presentations/verzani-1.pdf

Czekam na wasze opinie w kwestii tworzenia funkcjonalnych aplikacji dla uzytkownikow koncowych w R.

Pozdrawiam,
kwalkowicz
Michał Bojanowski

Michał Bojanowski socjolog, analityk

Temat: GUI do R

Witaj Krzysztofie,

Całkiem zaawansowany temat jak na pierwszy post na tej grupie :)

Istnieje już sporo interface'ów graficznych do R napisanych z myślą o osobach, które chcą skorzystać z bogactwa procedur R, ale nie potrzebują/chcą uczyć się samego języka. Przykłady to "R commander" Johna Foxa, "Sciviews", "JGR" i sporo innych. Tutaj http://www.sciviews.org/_rgui/ znajdziesz więcej aplikacji.

Większość z nich została napisana z myślą o (1) studentach, którzy, ponieważ wymagają łagodniejszego wprowadzenia w świat statystyki, szybciej uczą się poprzez interface graficzny, lub (2) ludziach potrzebujących częstego i szybkiego dostępu do tego samego typu analiz, z których mogą otrzymać wyniki po jednym "kliknięciu" a nie po wpisaniu odpowiedniej komendy w konsoli R.

Co do dwóch podejść, o których pisałeś, to myślę, że to pierwsze jest generalnie dużo prostsze w implementacji. Drugie podejście wymaga sporego nakładu pracy w stworzeniu samego interface'u jak również i w operowaniu strukturami danych R na poziomie C/C++. Zaletą drugiego podejścia niewątpliwie jest efektywność: procedury napisane w C/C++ będą działać dużo szybciej, co nie jest bez znaczenia szczególnie przy pracy z dużymi zbiorami danych.

Oczywiście wszystkie pomysły na temat graficznego interface'u zależą bardzo od tego kim jest użytkownik końcowy, czego potrzebuje oraz w jaki sposób i z jakimi danymi pracuje.

Jakiego typu aplikacje miałeś na myśli?

Pozdrawiam,

MichałMichał Bojanowski edytował(a) ten post dnia 13.03.08 o godzinie 04:43
Krzysztof W.

Krzysztof W. Technical Project
Manager, Capgemini
Polska

Temat: GUI do R

Jakiego typu aplikacje miałeś na myśli?

Witam!
Co do R Commander i JRG, uzywalem tego, jednakze to nakladki na R, ktore wlasnie sluza uproszczeniu jego interfejsu.
Moja aplikacja nie ma jeszcze okreslonej pelnej specyfikacji, jednakze bedzie zwiazana z estymacja wartosci sredniej w populacji, ktora zostala podzielona na warstwy po wylosowaniu proby. Dobrze byloby tez oszacowac symulacyjnie wariancje i obciazenie tych estymatorow.
W weekend przyjrze sie tez toolkitom graficznym bazujacym na wxWidgets i gui z javy. Zapomnialem napisac, ale jednym z zalozen jest rowniez przenosnosc aplikacji pomiedzy systemami Windows i Linux (gtk2, wxWidgets i Java to zapewnia).

Pozdrawiam,
kwalkowicz

Temat: GUI do R

Osoby chcące wykorzystać "R" w swoich aplikacjach na platformie .NET, albo piszące na tę platformę GUI dla "R", proszę o zapoznanie się z tematem:

http://www.goldenline.pl/forum/r/467016/s/1#8589332Adrian Olszewski edytował(a) ten post dnia 20.08.08 o godzinie 00:15

konto usunięte

Temat: GUI do R

Do R można się podpiąć poprzez COM. Potem pozostaje tylko kwestia wywołania wywoływania kolejnych funkcji w których parametrami są komendy R. Problemem może być jedynie problem z obsłużeniem ewentualnych okien wykresów( jeśli ktoś wie jak je przechwycić to proszę o opis) oraz jest niezbyt przyjemna obsługa błędów.

Temat: GUI do R

Czemu nieprzyjemna?

Co do przechwytywania wykresów, to z biblioteką RDCOM dostarczane są przykłady (np. w MFC, VBA), gdzie co najmniej jeden (nie pamiętam dokładnie) przechwytuje wykres z R.

C:\Program Files\R\(D)COM Server\samples\Graphics (VBA)
C:\Program Files\R\(D)COM Server\samples\MFCClient (MFC)
void CMFCClientDlg::OnTest()
{
IStatConnector lConnector;
IDispatch* lCharDev = NULL;
IDispatch* lGfxDev = NULL;

if(FAILED(m_CharDev.GetControlUnknown()->QueryInterface(IID_IDispatch,(LPVOID*) &lCharDev))) {
MessageBox("Error querying Dispatch from Character Device");
return;
}
if(FAILED(lConnector.CreateDispatch(_T("StatConnectorSrv.StatConnector")))) {
MessageBox("Error creating StatConnectorSrv");
return;
}
lConnector.Init(_T("R"));
lConnector.SetCharacterOutputDevice(lCharDev);
lConnector.AddGraphicsDevice(_T("Gfx"),m_GraphDev.GetGFX());
lConnector.EvaluateNoReturn(_T("cat(\"I am here\")"));
lConnector.EvaluateNoReturn(_T("plot(1:1000)"));
lConnector.Close();
}


Kontekst urządzenia graficznego (m_GraphDev) to kontrolka urządzenia graficznego, którą osadza się na formie, a R do niej przesyła polecenia rysowania (GDI).

Ogólna zasada (najprościej w VB):
http://rcom.univie.ac.at/download/Tutorial/EmbeddingR_...
strona 43

--------------
Tak bardzo "na szybko".

Visual C# Express 2008

Nowy projekt "Windows Forms Application".

Dodaj do toolboxa obiekt (COM) RStatConnetionGraphicsDevice.

Dodaj referencję (COM) STATCONNECTORSRVLib

Ustaw BackColor na White (ten w sekcji "Appearance", nie ten w "Misc");

A potem w kodzie:

STATCONNECTORSRVLib.StatConnectorClass r;
r = new STATCONNECTORSRVLib.StatConnectorClass();
r.Init("R");
r.AddGraphicsDevice("gfx", this.axStatConnectorGraphicsDevice1.GetGFX());
r.EvaluateNoReturn("plot(1:100,col=\"red\")");
this.axStatConnectorGraphicsDevice1.Invalidate();
r.RemoveGraphicsDevice("gfx");



Obrazek


Niestety, nie wiem, jak rozwiązać kwestę antyaliasingu i skalowania (to co jest, wygląda potwornie).

-------------------------
EDIT

Jeśli nie musisz mieć skalowalnego wyniku, a po prostu - statyczny obrazek z wykresem, to możesz od biedy użyć czegoś takiego:

r = new STATCONNECTORSRVLib.StatConnectorClass();
r.Init("R");
r.EvaluateNoReturn("library(Cairo)");

r.EvaluateNoReturn(@"CairoPNG('c:\\tmp\\R.png')");
r.EvaluateNoReturn("plot(1:100,col=\"red\")");
r.EvaluateNoReturn("dev.off()");

this.pictureBox1.Image = new Bitmap("c:\\tmp\\R.png");
this.pictureBox1.Invalidate();


Gdzie:

CairoPNG - funkcja z biblioteki Cairo, zapisująca wykres do PNG. Bibliotekę trzeba doinstalować:

install.packages(c("Cairo"), repos="http://cran.r-project.org" )
library(Cairo)


Zamiast CairoPNG(...) możesz użyć zwykłego png(...)

pictureBox1 to po prostu kontrolka PictureBox o odpowiednio dobranym rozmiarze, względnie z ustawionym skalowaniem.

Wynik jest o wiele lepszy (niewielkie "rozmycie" z uwagi na kompresję PNG):

Obrazek


Możesz się teraz pobawić w skalowanie obrazka przez:

1. obsługę zdarzenia "Resize" formatki,
2. podawanie do R komend, które przeskalują wykres i ponowne jego narysowanie.

ale nie wiem, czy jest to warte zachodu.Adrian Olszewski edytował(a) ten post dnia 12.03.09 o godzinie 15:52

konto usunięte

Temat: GUI do R

Genialny post Adrian. Wielkie dzięki
Marek K.

Marek K. Spec. ds. Analiz
Finansowo-Handlowych

Temat: GUI do R

Witam, wczoraj na LinkedIn ktoś wrzucił link do nowego GUI dla R o nazwie RedR. Ja jeszcze nie używałem, i w ogóle dopiero zaczynam przygodę z R, więc nic więcej nie napiszę;)

Oto link do owego GUI: http://code.google.com/p/r-orange/

Pozdrawiam, być może komuś się przyda.
Marek K.

Marek K. Spec. ds. Analiz
Finansowo-Handlowych

Temat: GUI do R

wybaczcie dubelMarek Kolano edytował(a) ten post dnia 25.09.09 o godzinie 02:12

Podobne tematy


Następna dyskusja:

Nowe GUI: R Studio




Wyślij zaproszenie do