1

写真は千の言葉に値するので、お見せします。

これは私が持っているものです:

年

これは私が必要なものです:

新着

いくつかのコードが役に立つかもしれません:

private JFreeChart createChart (XYDataset dataset)
{
    ValueAxis radiusAxis = new NumberAxis ();
    radiusAxis.setTickLabelsVisible (false);

    //   Rendering serie ( handeling null values )
    DefaultPolarItemRenderer ren = new DefaultPolarItemRenderer ()
    {
        @Override
        public void drawSeries (Graphics2D g2, Rectangle2D dataArea,
            PlotRenderingInfo info, PolarPlot plot, XYDataset dataset, int seriesIndex)
        {
            boolean newPath = true;
            GeneralPath polyline = new GeneralPath ();
            int numPoints = dataset.getItemCount (seriesIndex);
            for (int i = 0 ; i < numPoints - 1 ; i++)
            {
                double theta = dataset.getXValue (seriesIndex, i);
                double radius = dataset.getYValue (seriesIndex, i);
                Point p = plot.translateValueThetaRadiusToJava2D (theta, radius,
                        dataArea);
                if (p.x == 0 && p.y == 0)
                {
                    newPath = true;
                }
                else
                {
                    if (newPath)
                    {
                        polyline.moveTo (p.x, p.y);
                        newPath = false;
                    }
                    else
                    {
                        polyline.lineTo (p.x, p.y);
                    }
                }
            }
            g2.setPaint (lookupSeriesPaint (seriesIndex));
            g2.setStroke (lookupSeriesStroke (seriesIndex));
            g2.draw (polyline);
        }
    };

    // removing fill serie
    ren.setSeriesFilled (0, false);


    // custimizing angles
    PolarPlot plot = new PolarPlot (dataset, radiusAxis, ren)
    {
        @Override
        protected java.util.List refreshAngleTicks ()
        {
            java.util.List ticks = new ArrayList ();

            ticks.add (new NumberTick (0, "12AM", TextAnchor.CENTER, TextAnchor.TOP_LEFT, 0));
            ticks.add (new NumberTick (30, "2AM", TextAnchor.TOP_LEFT, TextAnchor.TOP_RIGHT, 0));
            ticks.add (new NumberTick (60, "4AM", TextAnchor.TOP_LEFT, TextAnchor.TOP_LEFT, 0));
            ticks.add (new NumberTick (90, "6AM", TextAnchor.TOP_LEFT, TextAnchor.TOP_LEFT, 0));
            ticks.add (new NumberTick (120, "8AM", TextAnchor.TOP_LEFT, TextAnchor.TOP_LEFT, 0));
            ticks.add (new NumberTick (150, "10AM", TextAnchor.TOP_LEFT, TextAnchor.TOP_LEFT, 0));
            ticks.add (new NumberTick (180, "12PM", TextAnchor.CENTER, TextAnchor.TOP_LEFT, 0));
            ticks.add (new NumberTick (210, "2PM", TextAnchor.TOP_RIGHT, TextAnchor.TOP_LEFT, 0));
            ticks.add (new NumberTick (240, "4PM", TextAnchor.TOP_RIGHT, TextAnchor.TOP_LEFT, 0));
            ticks.add (new NumberTick (270, "6PM", TextAnchor.TOP_RIGHT, TextAnchor.TOP_LEFT, 0));
            ticks.add (new NumberTick (300, "8PM", TextAnchor.TOP_RIGHT, TextAnchor.TOP_LEFT, 0));
            ticks.add (new NumberTick (330, "10PM", TextAnchor.TOP_RIGHT, TextAnchor.TOP_LEFT, 0));

            return ticks;
        }
    };

    // colors..
    plot.setOutlinePaint (new Color (0, 0, 0, 0));
    plot.setBackgroundPaint (Color.white);
    plot.setRadiusGridlinePaint (Color.gray);
    ren.setShapesVisible (true);
    plot.setRadiusGridlinesVisible (true);
    plot.setAngleGridlinesVisible (true);
    plot.setAngleLabelsVisible (true);
    plot.setOutlineVisible (true);
    plot.setAngleGridlinePaint (Color.BLACK);
    plot.setRenderer (ren);

    JFreeChart chart = new JFreeChart ("", JFreeChart.DEFAULT_TITLE_FONT, plot, false);
    chart.setBackgroundPaint (Color.white);
    chart.setBorderVisible (false);
    chart.setBorderPaint (Color.RED);

    // showing Label Axis ( 0 ... 20 ... 30 ...40)
    NumberAxis rangeAxis = (NumberAxis) plot.getAxis ();
    rangeAxis.setTickLabelsVisible (true);

    rangeAxis.setAxisLinePaint (Color.RED);
    return chart;
}

ご覧のとおり、Axis線の角度を変更したいです。進め方がわかりません。

ありがとうございました。

4

1 に答える 1

0

JFreeChartの使用バージョンについては言及していませんが、JFreeChart1.0.14ではポーラチャートがいくつか改善されています。PolarPlot.setAngleOffset()を使用して角度オフセットを設定できます。これにより、午前12時から好きな位置で開始できます。

ただし、軸自体を任意の角度にすることはできず、北、東、南、または西にのみ配置できます。これは、 PolarPlot.setAxisLocation()を使用して設定できます。

hth、
-マーティン

于 2013-03-14T08:06:08.207 に答える