java - 具有不同点颜色和大小的散点图

标签 java swt scatter-plot swtchart

我找到了SWTChart library只是想知道如何获得散点图,其中点具有不同的颜色和大小,如下所示 example .

example
(来源:matplotlib.org)

package org.swtchart.examples;

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.swtchart.Chart;
import org.swtchart.ILineSeries;
import org.swtchart.LineStyle;
import org.swtchart.ISeries.SeriesType;

/**
* An example for scatter chart.
*/
public class ScatterChartExample {

private static final double[] xSeries = { 0.0, 2.6, 6.5, 4.4, 5.6, 4.3,
    3.4, 10.8, 2.1, 8.9 };
private static final double[] ySeries = { 1.3, 0.0, 3.9, 2.6, 1.1, 0.6,
    3.1, 3.5, 5.6, 4.4 };

/**
* The main method.
* 
* @param args
*            the arguments
*/
public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Scatter Chart");
    shell.setSize(500, 400);
    shell.setLayout(new FillLayout());

    createChart(shell);

    shell.open();
    while (!shell.isDisposed()) {
    if (!display.readAndDispatch()) {
        display.sleep();
    }
    }
    display.dispose();
}

/**
* create the chart.
* 
* @param parent
*            The parent composite
* @return The created chart
*/
static public Chart createChart(Composite parent) {

    // create a chart
    Chart chart = new Chart(parent, SWT.NONE);

    // set titles
    chart.getTitle().setText("Scatter Chart");
    chart.getAxisSet().getXAxis(0).getTitle().setText("Score A");
    chart.getAxisSet().getYAxis(0).getTitle().setText("Score B");

    // create scatter series
    ILineSeries scatterSeries = (ILineSeries) chart.getSeriesSet()
        .createSeries(SeriesType.LINE, "scatter series");
    scatterSeries.setLineStyle(LineStyle.NONE);
    scatterSeries.setXSeries(xSeries);
    scatterSeries.setYSeries(ySeries);

    // adjust the axis range
    chart.getAxisSet().adjustRange();

    return chart;
}
}

如何获得点具有不同颜色和大小的散点图?

提前谢谢您。

<小时/>

我想我只是先尝试​​继承 LineSeries用这个简单的代码

package org.swtchart.examples;
import org.swtchart.Chart;
import org.swtchart.internal.series.LineSeries;

public class ILineSeriesTest extends LineSeries{

  protected ILineSeriesTest(Chart chart, String id) {
      super(chart, id);
  }
}

在示例代码中我将其更改为:

ILineSeriesTest scatterSeries = (ILineSeriesTest) chart.getSeriesSet()
            .createSeries(SeriesType.LINE, "scatter series");

但是,我收到以下错误:

Exception in thread "main" java.lang.ClassCastException: org.swtchart.internal.series.LineSeries cannot be cast to org.swtchart.examples.ILineSeriesTest
  at org.swtchart.examples.ScatterChartExampleTest.createChart(ScatterChartExampleTest.java:67)
  at org.swtchart.examples.ScatterChartExampleTest.main(ScatterChartExampleTest.java:38)

为什么没有成功?

提前谢谢您。

最佳答案

您可以使用 setSymbolColors(Color[] colors) 获得单独的颜色:

scatterSeries.setSymbolColors(new Color[] { ColorConstants.red,
            ColorConstants.red, ColorConstants.red, ColorConstants.red,
            ColorConstants.green, ColorConstants.green,
            ColorConstants.green, ColorConstants.blue, ColorConstants.blue,
            ColorConstants.blue });

请注意,此示例使用 ColorConstantsDraw2D .

至于尺寸:您必须实现自己的 ISeries它可以处理尺寸。

enter image description here

关于java - 具有不同点颜色和大小的散点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12701473/

相关文章:

java - 我的代码可以编译,但没有显示预期的输出

基于匹配属性对对象进行分组的Java算法

java - 我们如何单击具有相同类名和相同名称的按钮

swt - 有办法设置JFace的ComboViewer的长度吗?

javascript - 如何使用 highcharts 3D 散点图获得立方图?

Java从字节数组中提取 double

java - 如何在包含表格查看器的另一个组合的顶部显示组合?

java - 图像文件处理性能中的 SWT 与 AWT?

Python根据距离均匀分散固定中心周围的坐标

javascript - 在 Highcharts 中显示高于零的负 Y 值而不是低于零