Geç r, rserve ve ggplot ile çalışıyorum.Rserve'den ggplot çağırılıyor. Boş png görüntüsü 1KB
R konsolunda yürütüldüğünde bu kod parçası, beklendiği gibi iki çubuk içeren bir grafiği doğrudan oluşturur. png (dosya = 'Yash_GenderVsTotalAccountBalance.png', width = 400, yükseklik = 350, res = 72) ggplot (data = YashCustomersHesaplar, aes (x = GENDER_DESC, y = ACCOUNT_BALANCE)) + geom_bar (stat = 'kimlik') dev.off()
Fakat aynı kodu Rserve kullanarak JAVA'dan çağırdığımda (ggplot çağrıları dahil) boş bir png oluşturur. Kodu aşağıdaki gibidir.
package RRnD;
import java.awt.*;
import org.rosuda.REngine.*;
import org.rosuda.REngine.Rserve.*;
public class PlottingGenderVsTotalAccountBalance {
public static void main(String[] args) throws RserveException {
try {
RConnection c = new RConnection(); // make a new local connection on default port (6311)
System.out.println("1. Connection created ----------------------------------------------------------------------");
System.out.println("Working directory = "+c.eval("getwd()").asString());
System.out.println("2. Working dir read ----------------------------------------------------------------------");
c.eval("YashCustomers <- read.csv('YashCustomer.csv', header=TRUE)");
c.eval("YashAccounts <- read.csv('YashAccount.csv', header=TRUE)");
c.eval("YashCustomersAccounts <- merge(YashCustomers,YashAccounts, by='CUSTOMER_ID')");
System.out.println("3. Data.frames read ----------------------------------------------------------------------");
c.eval("library(ggplot2)");
c.eval("require(ggplot2)");
System.out.println("4. ggplot2 loaded ----------------------------------------------------------------------");
c.eval("png(file='Yash_GenderVsTotalAccountBalance.png',width=400,height=350,res=72)");
c.parseAndEval("ggplot(data=YashCustomersAccounts, aes(x=GENDER_DESC,y=ACCOUNT_BALANCE)) + geom_bar(stat='identity');dev.off()");
System.out.println("5. plotting done ----------------------------------------------------------------------");
REXP xp = c.parseAndEval("r=readBin('Yash_GenderVsTotalAccountBalance.png','raw',1024*1024)");
c.parseAndEval("unlink('Yash_GenderVsTotalAccountBalance.jpg'); r");
Image img = Toolkit.getDefaultToolkit().createImage(xp.asBytes());
System.out.println("img = "+img);
System.out.println("6. File reading done ----------------------------------------------------------------------");
System.out.println("10. All done ----------------------------------------------------------------------");
c.close();
} catch (REngineException ree) {
System.out.println("REngineException ...");
System.out.println(ree.getMessage());
} catch (Exception e) {
System.out.println("Exception ...");
System.out.println(e.getMessage());
}
}
}
NOT: - Ben şu çizgi gibi basit bir arsa arama yaparsanız yerine ggplot aramanın, iyi çalışıyor. png görüntü düzgün bir şekilde oluşturulur. c.parseAndEval ("plot (YashCustomers ['CUSTOMER_ID']); dev.off()"); ... yerine ... c.parseAndEval ("ggplot (veri = YashCustomersHesaplar, aes (x = GENDER_DESC, y = ACCOUNT_BALANCE)) + geom_bar (stat = 'kimlik'); dev.off()");
Sorunu bulma konusunda bana yardımcı olun. Çok teşekkürler, --Yash
IMO sen 'çıkan' ggplot2' nesneyi print' gerekir. – daroczig