График указывает вместо строк? JFreeChart PolarChart

В настоящее время PolarChart присоединяется ко всем координатам со строками, создающими полигон. Я просто хочу, чтобы это вывело каждую точку на печать с точкой и НЕ присоединилось к ним вместе. Действительно ли это возможно?

Я попытался использовать translateValueThetaRadiusToJava2D() и Graphics2D, чтобы нарисовать круги, но это очень неуклюже и изобретено.

Любые приветствующиеся предложения!

6
задан Speed 12 March 2010 в 20:43
поделиться

2 ответа

Итак, DefaultPolarItemRenderer принимает все полярные точки, преобразует их в обычные координаты Java2D, создает Polygon с этими точками и затем рисует его. Вот как я заставил его рисовать точки вместо многоугольника:

public class MyDefaultPolarItemRenderer extends DefaultPolarItemRenderer {

    @Override
    public void drawSeries(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D dataArea, PlotRenderingInfo info, PolarPlot plot, XYDataset dataset, int seriesIndex) {


        int numPoints = dataset.getItemCount(seriesIndex);
        for (int i = 0; i < numPoints; i++) {

            double theta = dataset.getXValue(seriesIndex, i);
            double radius = dataset.getYValue(seriesIndex, i);
            Point p = plot.translateValueThetaRadiusToJava2D(theta, radius,
                    dataArea);
            Ellipse2D el = new Ellipse2D.Double(p.x, p.y, 5, 5);
            g2.fill(el);
            g2.draw(el);
        }
    }
}

и затем инстанцировал этот класс в другом месте:

    MyDefaultPolarItemRenderer dpir = new MyDefaultPolarItemRenderer();
    dpir.setPlot(plot);
    plot.setRenderer(dpir);
6
ответ дан 10 December 2019 в 00:36
поделиться

Это немного сложнее. Имея PolarPlot , вы можете получить его AbstractRenderer и задать форму. Например,

PolarPlot plot = (PolarPlot) chart.getPlot();
AbstractRenderer ar = (AbstractRenderer) plot.getRenderer();
ar.setSeriesShape(0, ShapeUtilities.createDiamond(5), true);

Ромб появится в легенде, но DefaultPolarItemRenderer не отображает формы и не обеспечивает управление линиями. Вам придется расширить средство визуализации по умолчанию и переопределить drawSeries () . XYLineAndShapeRenderer - хороший пример для изучения; вы можете увидеть, как это используется в TimeSeriesChartDemo1 .

Если вам terra incognita , я бы порекомендовал Руководство разработчика JFreeChart .

Отказ от ответственности: не связан с Object Refinery Limited; Я довольный клиент и очень незначительный вкладчик.

2
ответ дан 10 December 2019 в 00:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: