?? symbolicxyplotdemo.java
字號:
XYItemRenderer renderer2 = new StandardXYItemRenderer(StandardXYItemRenderer.SHAPES, null);
plot.setSecondaryDataset(0, series1);
plot.setSecondaryRenderer(0, renderer2);
// make the chart...
JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, plot, true);
chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0, 1000, Color.blue));
// and present it in a frame...
JFrame frame = new ChartFrame(frameTitle, chart);
frame.pack();
RefineryUtilities.positionFrameRandomly(frame);
frame.show();
}
/**
* Displays an horizontally combined XYPlot with X and Y symbolic data.
*
* @param frameTitle the frame title.
* @param data1 the dataset 1.
* @param data2 the dataset 2.
*/
private static void displayXYSymbolicCombinedHorizontally(String frameTitle,
XYDataset data1, XYDataset data2) {
String title = "Pollutant Horizontally Combined";
String x1AxisLabel = "Contamination";
String x2AxisLabel = "Type";
String yAxisLabel = "Pollutant";
// combine the y symbolic values of the two data sets
String[] combinedYSymbolicValues =
SampleXYSymbolicDataset.combineYSymbolicDataset((YisSymbolic) data1,
(YisSymbolic) data2);
// make master dataset...
CombinedDataset data = new CombinedDataset();
data.add(data1);
data.add(data2);
// decompose data...
XYDataset series0 = new SubSeriesDataset(data, 0);
XYDataset series1 = new SubSeriesDataset(data, 1);
JFreeChart chart = null;
// common horizontal and vertical axes
SymbolicAxis hsymbolicAxis0
= new SymbolicAxis(x1AxisLabel, ((XisSymbolic) data1).getXSymbolicValues());
SymbolicAxis hsymbolicAxis1
= new SymbolicAxis(x2AxisLabel, ((XisSymbolic) data2).getXSymbolicValues());
SymbolicAxis symbolicAxis
= new SymbolicAxis(yAxisLabel, combinedYSymbolicValues);
// create main plot...
CombinedDomainXYPlot mainPlot = new CombinedDomainXYPlot(symbolicAxis);
// add subplots...
XYItemRenderer renderer = new StandardXYItemRenderer(StandardXYItemRenderer.SHAPES, null);
XYPlot subplot0 = new XYPlot(series0, hsymbolicAxis0, null, renderer);
XYPlot subplot1 = new XYPlot(series1, hsymbolicAxis1, null, renderer);
mainPlot.add(subplot0, 1);
mainPlot.add(subplot1, 1);
// make the top level JFreeChart object
chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, mainPlot, true);
chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0, 1000, Color.blue));
// and present it in a frame...
JFrame frame = new ChartFrame(frameTitle, chart);
frame.pack();
RefineryUtilities.positionFrameRandomly(frame);
frame.show();
}
/**
* Vertically combined sample1 and sample2 and display it.
*
* @param frameTitle the frame title.
* @param data1 the dataset 1.
* @param data2 the dataset 2.
*/
private static void displayXYSymbolicCombinedVertically(String frameTitle,
XYDataset data1, XYDataset data2) {
String title = "Pollutant Vertically Combined";
String xAxisLabel = "Contamination and Type";
String yAxisLabel = "Pollutant";
// combine the x symbolic values of the two data sets
String[] combinedXSymbolicValues
= SampleXYSymbolicDataset.combineXSymbolicDataset((XisSymbolic) data1,
(XisSymbolic) data2);
// make master dataset...
CombinedDataset data = new CombinedDataset();
data.add(data1);
data.add(data2);
// decompose data...
XYDataset series0 = new SubSeriesDataset(data, 0);
XYDataset series1 = new SubSeriesDataset(data, 1);
// common horizontal and vertical axes
SymbolicAxis hsymbolicAxis
= new SymbolicAxis(xAxisLabel, combinedXSymbolicValues);
SymbolicAxis vsymbolicAxis0
= new SymbolicAxis(yAxisLabel, ((YisSymbolic) data1).getYSymbolicValues());
SymbolicAxis vsymbolicAxis1
= new SymbolicAxis(yAxisLabel, ((YisSymbolic) data2).getYSymbolicValues());
// create the main plot...
CombinedDomainXYPlot mainPlot = new CombinedDomainXYPlot(hsymbolicAxis);
// add the sub-plots...
XYItemRenderer renderer = new StandardXYItemRenderer(StandardXYItemRenderer.SHAPES, null);
XYPlot subplot0 = new XYPlot(series0, null, vsymbolicAxis0, renderer);
XYPlot subplot1 = new XYPlot(series1, null, vsymbolicAxis1, renderer);
mainPlot.add(subplot0, 1);
mainPlot.add(subplot1, 1);
// make the chart...
JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, mainPlot, true);
chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0, 1000, Color.blue));
// and present it in a frame...
JFrame frame = new ChartFrame(frameTitle, chart);
frame.pack();
RefineryUtilities.positionFrameRandomly(frame);
frame.show();
}
/**
* Transform an primitive array to an object array.
*
* @param arr the array.
*
* @return an array.
*/
private static Object toArray(Object arr) {
if (arr == null) {
return arr;
}
Class cls = arr.getClass();
if (!cls.isArray()) {
return arr;
}
Class compType = cls.getComponentType();
int dim = 1;
while (!compType.isPrimitive()) {
if (!compType.isArray()) {
return arr;
}
else {
dim++;
compType = compType.getComponentType();
}
}
int[] length = new int[dim];
length[0] = Array.getLength(arr);
Object[] newarr = null;
try {
if (compType.equals(Integer.TYPE)) {
newarr = (Object[]) Array.newInstance(Class.forName("java.lang.Integer"), length);
}
else if (compType.equals(Double.TYPE)) {
newarr = (Object[]) Array.newInstance(Class.forName("java.lang.Double"), length);
}
else if (compType.equals(Long.TYPE)) {
newarr = (Object[]) Array.newInstance(Class.forName("java.lang.Long"), length);
}
else if (compType.equals(Float.TYPE)) {
newarr = (Object[]) Array.newInstance(Class.forName("java.lang.Float"), length);
}
else if (compType.equals(Short.TYPE)) {
newarr = (Object[]) Array.newInstance(Class.forName("java.lang.Short"), length);
}
else if (compType.equals(Byte.TYPE)) {
newarr = (Object[]) Array.newInstance(Class.forName("java.lang.Byte"), length);
}
else if (compType.equals(Character.TYPE)) {
newarr = (Object[]) Array.newInstance(Class.forName("java.lang.Character"), length);
}
else if (compType.equals(Boolean.TYPE)) {
newarr = (Object[]) Array.newInstance(Class.forName("java.lang.Boolean"), length);
}
}
catch (ClassNotFoundException ex) {
System.out.println(ex);
}
for (int i = 0; i < length[0]; i++) {
if (dim != 1) {
newarr[i] = toArray(Array.get(arr, i));
}
else {
newarr[i] = Array.get(arr, i);
}
}
return newarr;
}
/**
* Starting point for the application.
*
* @param args ignored.
*/
public static void main(String[] args) {
SampleXYSymbolicDataset s1 = createXYSymbolicSample1();
SampleXYSymbolicDataset s2 = createXYSymbolicSample2();
displayXYSymbolic("Example 1", s1, "Pollutant", "contamination", "pollutant");
displayXYSymbolic("Example 2", s2, "Pollutant", "type", "pollutant");
displayXYSymbolicCombinedHorizontally("Example 3", (SampleXYSymbolicDataset) s1.clone(),
(SampleXYSymbolicDataset) s2.clone());
displayXYSymbolicCombinedVertically("Example 4", (SampleXYSymbolicDataset) s1.clone(),
(SampleXYSymbolicDataset) s2.clone());
displayXYSymbolicOverlaid("Example 5", (SampleXYSymbolicDataset) s1.clone(),
(SampleXYSymbolicDataset) s2.clone());
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -