Show chart of different attributes in Java application

Aldi
Aldi New Altair Community Member
edited November 5 in Community Q&A
Hi, I'm a beginner and would like to show the charts that have been produced by the Bayesian operator. Since there are multiple attributes (Married, Age, Income, and Gender), I would also like to show the charts of the other attributes in my Java application. I've followed the answer in this forum: https://community.rapidminer.com/discussion/13772/display-decision-tree-from-rapidminer and was successful in generating one chart (married), is there a way to show the other charts of other attributes? Here is my code:

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.awt.image.BufferedImage;

import java.io.File;


import com.rapidminer.RapidMiner;

import com.rapidminer.RepositoryProcessLocation;

import com.rapidminer.belt.table.Table;

import com.rapidminer.example.Attribute;

import com.rapidminer.example.Attributes;

import com.rapidminer.example.Example;

import com.rapidminer.example.ExampleSet;

import com.rapidminer.example.table.ExampleTable;

import com.rapidminer.example.table.MemoryExampleTable;

import com.rapidminer.example.table.ResultSetDataRowReader;

import com.rapidminer.gui.RapidMinerGUI;

import com.rapidminer.gui.ToolbarGUIStartupListener;

import com.rapidminer.gui.renderer.Renderer;

import com.rapidminer.gui.renderer.RendererService;

import com.rapidminer.operator.ExecutionMode;

import com.rapidminer.operator.IOContainer;

import com.rapidminer.operator.IOObject;

import com.rapidminer.tools.PlatformUtilities;

import com.rapidminer.Process;

import com.rapidminer.RapidMiner;

import com.rapidminer.operator.Operator;

import com.rapidminer.operator.OperatorException;

import com.rapidminer.operator.learner.tree.DecisionTreeLeafCreator;

import com.rapidminer.report.Renderable;

import com.rapidminer.report.Reportable;

import com.rapidminer.repository.IOObjectEntry;

import com.rapidminer.repository.MalformedRepositoryLocationException;

import com.rapidminer.repository.ProcessEntry;

import com.rapidminer.repository.Repository;

import com.rapidminer.repository.RepositoryException;

import com.rapidminer.repository.RepositoryLocation;

import com.rapidminer.repository.RepositoryManager;

import com.rapidminer.tools.XMLException;

import com.rapidminer.tools.plugin.Plugin;

import com.rapidminer.operator.concurrency.*;

import com.rapidminer.operator.concurrency.internal.*;



import java.io.File;

import java.io.IOException;

import java.lang.Object;

import java.nio.file.Paths;

import java.util.ArrayList;

import java.util.Collection;

import java.util.Iterator;

import java.util.Scanner;

import java.util.Vector;


import javax.imageio.ImageIO;

import javax.swing.*;

import javax.swing.filechooser.FileSystemView;

import javax.swing.table.DefaultTableModel;


public class GUILauncher implements ActionListener{


JFrame mainFrame = new JFrame("App");

JFrame imageFrame = new JFrame("Image");

JTable tData = new JTable();

JScrollPane sPane = new JScrollPane(tData);

DefaultTableModel dtm = new DefaultTableModel();

JLabel s = new JLabel();

JPanel bPanel = new JPanel(new FlowLayout());

JButton b25 = new JButton("25%");

JButton b30 = new JButton("30%");

JButton b50 = new JButton("50%");

JFileChooser files = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory()); 

JPanel textPanel = new JPanel(new GridLayout(1,3));

JPanel filePanel = new JPanel(new FlowLayout());

JPanel imagePanel = new JPanel(new GridLayout(1,1));

JTextArea aText = new JTextArea(25,5);

JTextArea bText = new JTextArea(25,5);

JTextArea cText = new JTextArea(25,5);

public GUILauncher(){

mainFrame.setVisible(true);

mainFrame.setSize(720, 500);

mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

mainFrame.setLocationRelativeTo(null);

textPanel.add(aText);

textPanel.add(bText);

textPanel.add(cText);

imagePanel.add(s);

bPanel.add(b25);

bPanel.add(b30);

bPanel.add(b50);

aText.setLineWrap(true);

bText.setLineWrap(true);

cText.setLineWrap(true);

filePanel.add(files);


mainFrame.add(bPanel, BorderLayout.CENTER);

mainFrame.add(textPanel, BorderLayout.NORTH);

imageFrame.add(imagePanel, BorderLayout.CENTER);


b25.addActionListener(this);

b30.addActionListener(this);

b50.addActionListener(this);


System.setProperty(PlatformUtilities.PROPERTY_RAPIDMINER_HOME, Paths.get("").toAbsolutePath().toString());

RapidMiner.setExecutionMode(RapidMiner.ExecutionMode.COMMAND_LINE);

RapidMiner.init();

Plugin.setPluginLocation("D:/RapidMiner Studio/lib/plugins");

Plugin.addAdditionalExtensionDir("D:/RapidMiner Studio/lib/plugins");

Plugin.setInitPlugins(true);

}


public static void main(String args[]) throws Exception {

new GUILauncher();


}


@SuppressWarnings("null")

@Override

public void actionPerformed(ActionEvent arg0) {

if(arg0.getSource() == b25){

Repository repo;

Process process = null;

RepositoryProcessLocation processLocation;

IOContainer ioResult = null;

try {

repo = RepositoryManager.getInstance(null).getRepository("Projects");

processLocation = new RepositoryProcessLocation(new RepositoryLocation(repo.getLocation(), "Process_25%"));

process = processLocation.load(null);

ioResult = process.run();

} catch (RepositoryException | IOException | XMLException | OperatorException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}


IOObject result = ioResult.getElementAt(2);

String name = RendererService.getName(result.getClass());

java.util.List<Renderer> renderers = RendererService.getRenderers(name);


imageFrame.setVisible(true);

imageFrame.setSize(400, 500);

imageFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

imageFrame.setLocationRelativeTo(null);

for(Renderer renderer:renderers){

IOContainer dummy = new IOContainer();

int imgWidth = 400;

int imgHeight = 400;

Reportable reportable = renderer.createReportable(result, dummy, imgWidth, imgHeight);

if(reportable instanceof Renderable){

Renderable renderable = (Renderable) reportable;

renderable.prepareRendering();

int preferredWidth = renderable.getRenderWidth(800);

int preferredHeight = renderable.getRenderHeight(800);

final BufferedImage img = new BufferedImage(imgWidth, imgHeight, BufferedImage.TYPE_INT_RGB);

Graphics2D graphics = (Graphics2D) img.getGraphics();

graphics.setColor(Color.WHITE);

graphics.fillRect(0, 0, imgWidth, imgHeight);

double scale = Math.min((double) imgWidth / (double) preferredWidth, (double) imgHeight / (double) preferredHeight);

graphics.scale(scale, scale);

renderable.render(graphics, preferredWidth, preferredHeight);

s.setIcon(new ImageIcon(img));

}

}


String result0 = ioResult.getElementAt(0).toString();

String result1 = ioResult.getElementAt(1).toString();

String result2 = ioResult.getElementAt(2).toString();


aText.setText(result0);

bText.setText(result1);

cText.setText(result2);

}

else if(arg0.getSource() == b30){

Repository repo;

Process process = null;

RepositoryProcessLocation processLocation;

IOContainer ioResult = null;

try {

repo = RepositoryManager.getInstance(null).getRepository("Projects");

processLocation = new RepositoryProcessLocation(new RepositoryLocation(repo.getLocation(), "Process_30%"));

process = processLocation.load(null);

ioResult = process.run();

} catch (RepositoryException | IOException | XMLException | OperatorException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}


IOObject result = ioResult.getElementAt(2);

String name = RendererService.getName(result.getClass());

java.util.List<Renderer> renderers = RendererService.getRenderers(name);


imageFrame.setVisible(true);

imageFrame.setSize(400, 600);

imageFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

imageFrame.setLocationRelativeTo(null);

for(Renderer renderer:renderers){

IOContainer dummy = new IOContainer();

int imgWidth = 400;

int imgHeight = 450;


Reportable reportable = renderer.createReportable(result, dummy, imgWidth, imgHeight);

if(reportable instanceof Renderable){

Renderable renderable = (Renderable) reportable;

renderable.prepareRendering();

int preferredWidth = renderable.getRenderWidth(800);

int preferredHeight = renderable.getRenderHeight(800);

final BufferedImage img = new BufferedImage(imgWidth, imgHeight, BufferedImage.TYPE_INT_RGB);

Graphics2D graphics = (Graphics2D) img.getGraphics();

graphics.setColor(Color.WHITE);

graphics.fillRect(0, 0, imgWidth, imgHeight);

double scale = Math.min((double) imgWidth / (double) preferredWidth, (double) imgHeight / (double) preferredHeight);

graphics.scale(scale, scale);

renderable.render(graphics, preferredWidth, preferredHeight);

s.setIcon(new ImageIcon(img));

}

}


String result0 = ioResult.getElementAt(0).toString();

String result1 = ioResult.getElementAt(1).toString();

String result2 = ioResult.getElementAt(2).toString();


aText.setText(result0);

bText.setText(result1);

cText.setText(result2);

}

else if(arg0.getSource() == b50){

Repository repo;

Process process = null;

RepositoryProcessLocation processLocation;

IOContainer ioResult = null;

try {

repo = RepositoryManager.getInstance(null).getRepository("Projects");

processLocation = new RepositoryProcessLocation(new RepositoryLocation(repo.getLocation(), "Process_50%"));

process = processLocation.load(null);

ioResult = process.run();

} catch (RepositoryException | IOException | XMLException | OperatorException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}


IOObject result = ioResult.getElementAt(2);

String name = RendererService.getName(result.getClass());

java.util.List<Renderer> renderers = RendererService.getRenderers(name);


imageFrame.setVisible(true);

imageFrame.setSize(400, 600);

imageFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

imageFrame.setLocationRelativeTo(null);

for(Renderer renderer:renderers){

IOContainer dummy = new IOContainer();

int imgWidth = 400;

int imgHeight = 450;


Reportable reportable = renderer.createReportable(result, dummy, imgWidth, imgHeight);

if(reportable instanceof Renderable){

Renderable renderable = (Renderable) reportable;

renderable.prepareRendering();

int preferredWidth = renderable.getRenderWidth(800);

int preferredHeight = renderable.getRenderHeight(800);

final BufferedImage img = new BufferedImage(imgWidth, imgHeight, BufferedImage.TYPE_INT_RGB);

Graphics2D graphics = (Graphics2D) img.getGraphics();

graphics.setColor(Color.WHITE);

graphics.fillRect(0, 0, imgWidth, imgHeight);

double scale = Math.min((double) imgWidth / (double) preferredWidth, (double) imgHeight / (double) preferredHeight);

graphics.scale(scale, scale);

renderable.render(graphics, preferredWidth, preferredHeight);

s.setIcon(new ImageIcon(img));

}

}


String result0 = ioResult.getElementAt(0).toString();

String result1 = ioResult.getElementAt(1).toString();

String result2 = ioResult.getElementAt(2).toString();


aText.setText(result0);

bText.setText(result1);

cText.setText(result2);

}


}

}

Answers