目前,PolarChart使用创建多边形的线连接所有坐标。我只想让它用一个点来绘制每个点,而不是把它们连接在一起。这个是可能的吗?
我尝试过使用translateValueThetaRadiusToJava2D()和Graphics2D来画圆,但是它非常笨拙和做作。
欢迎任何建议!
发布于 2010-03-18 02:12:12
因此,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);发布于 2011-05-05 18:23:39
这是一个很好的讨论,如果您希望该函数拾取用户分配给该系列的颜色
添加...
Color c =(Color)this.lookupSeriesPaint(seriesIndex);
g2.setColor(c);之前..。
g.draw(e1);还有其他功能..。使用代码完成来查看针对以lookupSeries........(int seriesindex)开头的名称的系列渲染还提供了哪些函数
发布于 2017-06-27 19:47:01
我发现了一种相当奇怪的方法来获得这些点,而不需要任何连接它们的线。
我将renderer的Stroke设置为一条细线,虚线相位为0,长度为1e10:
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);https://stackoverflow.com/questions/2433980
复制相似问题