1
由於一張圖片勝過千言萬語,我會告訴你。JfreeChart:改變極座標圖上的軸線角度
這是我有:
這就是我需要:
一些代碼也許有用:
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
線角度;我不知道如何繼續。
謝謝。
交叉貼[這裏](http://www.jfree.org/forum/viewtopic.php?f=3&t=116432)。另請參閱本[問與答](http://stackoverflow.com/q/3458824/230513)。 – trashgod 2013-03-06 19:23:48
您可能想突出顯示兩個圖像之間的差異。我不完全相信有一個。 – mbatchkarov 2013-03-06 20:06:44
感謝您的反饋,如果您注意到我想更改軸線角度(在此示例中從6AM到4AM)。任何想法將不勝感激 – Skazi 2013-03-06 23:15:09