首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >绘制点而不是线?JFreeChart PolarChart

绘制点而不是线?JFreeChart PolarChart
EN

Stack Overflow用户
提问于 2010-03-13 00:07:02
回答 3查看 4.7K关注 0票数 6

目前,PolarChart使用创建多边形的线连接所有坐标。我只想让它用一个点来绘制每个点,而不是把它们连接在一起。这个是可能的吗?

我尝试过使用translateValueThetaRadiusToJava2D()和Graphics2D来画圆,但是它非常笨拙和做作。

欢迎任何建议!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-18 02:12:12

因此,DefaultPolarItemRenderer接收所有极点,将极点转换为常规Java2D坐标,使用这些点生成Polygon,然后绘制它。下面是我如何让它绘制点而不是多边形:

代码语言:javascript
运行
复制
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);
        }
    }
}

然后在别处实例化这个类:

代码语言:javascript
运行
复制
    MyDefaultPolarItemRenderer dpir = new MyDefaultPolarItemRenderer();
    dpir.setPlot(plot);
    plot.setRenderer(dpir);
票数 6
EN

Stack Overflow用户

发布于 2011-05-05 18:23:39

这是一个很好的讨论,如果您希望该函数拾取用户分配给该系列的颜色

添加...

代码语言:javascript
运行
复制
Color c =(Color)this.lookupSeriesPaint(seriesIndex);
g2.setColor(c);

之前..。

代码语言:javascript
运行
复制
g.draw(e1);

还有其他功能..。使用代码完成来查看针对以lookupSeries........(int seriesindex)开头的名称的系列渲染还提供了哪些函数

票数 1
EN

Stack Overflow用户

发布于 2017-06-27 19:47:01

我发现了一种相当奇怪的方法来获得这些点,而不需要任何连接它们的线。

我将rendererStroke设置为一条细线,虚线相位为0,长度为1e10:

代码语言:javascript
运行
复制
Stroke dashedStroke = new BasicStroke(
                          0.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND,
                          0.0f, new float[] {0.0f, 1e10f}, 1.0f );
renderer.setSeriesStroke(0, dashedStroke);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2433980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档