Java JFreeChart PolarPlot:数学方向

Java JFreeChart PolarPlot:数学方向,java,jfreechart,Java,Jfreechart,我想创建一个极坐标图,其中数据以数学方向绘制(因此,序列从东开始,逆时针继续)。JFreeChart的PolarPlot的默认行为是从北开始,顺时针继续序列 在PolarPlot类中是否有对此内置的支持?我知道如何转换数据以达到目标,但这种方法相当麻烦,因为我也需要调整角度标签 不幸的是,似乎没有对此的内置支持。可以通过覆盖PolarPlot的refreshAngleTicks()方法调整角度标签: PolarPlot plot = new PolarPlot() { @Ove

我想创建一个极坐标图,其中数据以数学方向绘制(因此,序列从东开始,逆时针继续)。JFreeChart的
PolarPlot
的默认行为是从北开始,顺时针继续序列


PolarPlot
类中是否有对此内置的支持?我知道如何转换数据以达到目标,但这种方法相当麻烦,因为我也需要调整角度标签

不幸的是,似乎没有对此的内置支持。可以通过覆盖PolarPlot的refreshAngleTicks()方法调整角度标签:

PolarPlot plot = new PolarPlot() {

        @Override
        protected List refreshAngleTicks() {
            List ticks = new ArrayList();
            // produce some ticks, e.g. NumberTick instances
            ticks.add(new NumberTick(0, "90", TextAnchor.TOP_LEFT, TextAnchor.TOP_LEFT, 0));
            ticks.add(new NumberTick(45, "45", TextAnchor.TOP_LEFT, TextAnchor.TOP_LEFT, 0));
            ticks.add(new NumberTick(90, "0", TextAnchor.TOP_LEFT, TextAnchor.TOP_LEFT, 0));
            ticks.add(new NumberTick(135, "315", TextAnchor.TOP_LEFT, TextAnchor.TOP_LEFT, 0));
            ticks.add(new NumberTick(180, "270", TextAnchor.TOP_LEFT, TextAnchor.TOP_LEFT, 0));
            ticks.add(new NumberTick(225, "225", TextAnchor.TOP_LEFT, TextAnchor.TOP_LEFT, 0));
            ticks.add(new NumberTick(270, "180", TextAnchor.TOP_LEFT, TextAnchor.TOP_LEFT, 0));
            ticks.add(new NumberTick(315, "135", TextAnchor.TOP_LEFT, TextAnchor.TOP_LEFT, 0));
            return ticks;
        }
    };

不幸的是,似乎没有对此的内置支持。可以通过覆盖PolarPlot的refreshAngleTicks()方法调整角度标签:

PolarPlot plot = new PolarPlot() {

        @Override
        protected List refreshAngleTicks() {
            List ticks = new ArrayList();
            // produce some ticks, e.g. NumberTick instances
            ticks.add(new NumberTick(0, "90", TextAnchor.TOP_LEFT, TextAnchor.TOP_LEFT, 0));
            ticks.add(new NumberTick(45, "45", TextAnchor.TOP_LEFT, TextAnchor.TOP_LEFT, 0));
            ticks.add(new NumberTick(90, "0", TextAnchor.TOP_LEFT, TextAnchor.TOP_LEFT, 0));
            ticks.add(new NumberTick(135, "315", TextAnchor.TOP_LEFT, TextAnchor.TOP_LEFT, 0));
            ticks.add(new NumberTick(180, "270", TextAnchor.TOP_LEFT, TextAnchor.TOP_LEFT, 0));
            ticks.add(new NumberTick(225, "225", TextAnchor.TOP_LEFT, TextAnchor.TOP_LEFT, 0));
            ticks.add(new NumberTick(270, "180", TextAnchor.TOP_LEFT, TextAnchor.TOP_LEFT, 0));
            ticks.add(new NumberTick(315, "135", TextAnchor.TOP_LEFT, TextAnchor.TOP_LEFT, 0));
            return ticks;
        }
    };
顺便说一句,似乎已经有了很多的申请

使用转换θ'=π/4–θ并重写@mort的
refreshAngleTicks()
,可以产生合理的结果

附录:使用新的API也可以看到这一点

导入java.awt.Color;
导入java.awt.Dimension;
导入java.util.ArrayList;
导入java.util.List;
导入javax.swing.JFrame;
导入org.jfree.chart.ChartPanel;
导入org.jfree.chart.JFreeChart;
导入org.jfree.chart.axis.NumberAxis;
导入org.jfree.chart.axis.NumberTick;
导入org.jfree.chart.axis.ValueAxis;
导入org.jfree.chart.plot.PolarPlot;
导入org.jfree.chart.renderer.DefaultPolarItemRenderer;
导入org.jfree.chart.renderer.PolarItemRenderer;
导入org.jfree.data.xy.XYDataset;
导入org.jfree.data.xy.XYSeries;
导入org.jfree.data.xy.XYSeriesCollection;
导入org.jfree.ui.TextAnchor;
/**
*@见http://en.wikipedia.org/wiki/Polar_coordinate_system
*@见https://stackoverflow.com/questions/3458824
*/
公共类阿基米德螺旋扩展JFrame{
私有静态最终字符串title=“阿基米德螺旋”;
公共阿基米德螺旋(字符串标题){
超级(标题);
JFreeChart chart=createChart(createDataset());
ChartPanel面板=新的ChartPanel(图表);
面板。设置首选尺寸(新尺寸(500500));
panel.setMouseZoomable(假);
本条添加(面板);
}
私有静态XYDataset createDataset(){
XYSeriesCollection结果=新的XYSeriesCollection();
XYSeries系列=新的XYSeries(标题);
for(int t=0;t作为旁白,似乎是for和applications

使用转换θ'=π/4–θ并重写@mort的
refreshAngleTicks()
,可以产生合理的结果

附录:使用新的API也可以看到这一点

导入java.awt.Color;
导入java.awt.Dimension;
导入java.util.ArrayList;
导入java.util.List;
导入javax.swing.JFrame;
导入org.jfree.chart.ChartPanel;
导入org.jfree.chart.JFreeChart;
导入org.jfree.chart.axis.NumberAxis;
导入org.jfree.chart.axis.NumberTick;
导入org.jfree.chart.axis.ValueAxis;
导入org.jfree.chart.plot.PolarPlot;
导入org.jfree.chart.renderer.DefaultPolarItemRenderer;
导入org.jfree.chart.renderer.PolarItemRenderer;
导入org.jfree.data.xy.XYDataset;
导入org.jfree.data.xy.XYSeries;
导入org.jfree.data.xy.XYSeriesCollection;
导入org.jfree.ui.TextAnchor;
/**
*@见http://en.wikipedia.org/wiki/Polar_coordinate_system
*@见https://stackoverflow.com/questions/3458824
*/
公共类阿基米德螺旋扩展JFrame{
私有静态最终字符串title=“阿基米德螺旋”;
公共阿基米德螺旋(字符串标题){
超级(标题);
JFreeChart chart=createChart(createDataset());
ChartPanel面板=新的ChartPanel(图表);
面板。设置首选尺寸(新尺寸(500500));
panel.setMouseZoomable(假);
本条添加(面板);
}
私有静态XYDataset createDataset(){
XYSeriesCollection结果=新的XYSeriesCollection();
XYSeries系列=新的XYSeries(标题);

对于(int t=0;t而言,
JFreeChart
的当前版本似乎更容易解决此问题: 有三种方法可用:

setCounterClockwise(true) // changes the direction of the ticks
setAxisLocation(PolarAxisLocation.EAST_BELOW) // defines the placement of the axis
setAngleOffset(0);
完整示例改编自:

导入java.awt.Color;
导入java.awt.Dimension;
导入javax.swing.JFrame;
导入org.jfree.chart.ChartPanel;
导入org.jfree.chart.JFreeChart;
导入org.jfree.chart.axis.NumberAxis;
导入org.jfree.chart.axis.ValueAxis;
导入org.jfree.chart.plot.PolarAxisLocation;
导入org.jfree.chart.plot.PolarPlot;
导入org.jfree.chart.renderer.DefaultPolarItemRenderer;
导入org.jfree.data.xy.XYDataset;
导入org.jfree.data.xy.XYSeries;
导入org.jfree.data.xy.XYSeriesCollection;
/**
*@见http://en.wikipedia.org/wiki/Polar_coordinate_system
*@见https://stackoverflow.com/questions/3458824
*@见https://stackoverflow.com/questions/6540390
*@见https://stackoverflow.com/questions/6576911
*@见https://stackoverflow.com/a/10227275/230513
*/
公共类阿基米德螺旋扩展JFrame{
私有静态最终字符串title=“阿基米德螺旋”;
公共阿基米德螺旋(字符串标题){
超级(标题);
JFreeChart chart=createChart(createDataset());
ChartPanel面板=新的ChartPanel(图表);
面板。设置首选尺寸(新尺寸(500500));
panel.setMouseZoomable(假);
本条添加(面板);
}
私有静态XYDataset createDataset(){
XYSeriesCollection结果=新的XYSeriesCollection();
XYSeries系列=新的XYSeries(标题);

对于(int t=0;t而言,
JFreeChart
的当前版本似乎更容易解决此问题: 有三种方法可用:

setCounterClockwise(true) // changes the direction of the ticks
setAxisLocation(PolarAxisLocation.EAST_BELOW) // defines the placement of the axis
setAngleOffset(0);
完整示例改编自:

导入java.awt.Color;
导入java.awt.Dimension;
导入javax.swing.JFrame;
导入org.jfree.chart.ChartPanel;
导入org.jfree.chart.JFreeChart;
导入org.jfree.chart.axis.NumberAxis;
导入org.jfree.chart.axis.ValueAxis;