用Jfreechart的时候,折线3D图,如果只有一个点的话,这个点就不显示!有什么办法让他显示出来吗?(有源码),可以直接运行出效果啊

nil2000 2009-07-09 11:15:32
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.geom.Ellipse2D;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JPanel;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.HorizontalAlignment;
import org.jfree.ui.RectangleEdge;
import org.jfree.ui.RefineryUtilities;

/**
* A simple demonstration application showing how to create a line chart using
* data from a {@link CategoryDataset}.
*/
public class LineChartDemo1 extends ApplicationFrame {

/**
* Creates a new demo.
*
* @param title the frame title.
*/
public LineChartDemo1(String title) {
super(title);
JPanel chartPanel = createDemoPanel();
chartPanel.setPreferredSize(new Dimension(500, 270));
setContentPane(chartPanel);
}

/**
* Creates a sample dataset.
*
* @return The dataset.
*/
private static CategoryDataset createDataset() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(212, "Classes", "JDK 1.0");

return dataset;
}

/**
* Creates a sample chart.
*
* @param dataset a dataset.
*
* @return The chart.
*/
private static JFreeChart createChart(CategoryDataset dataset) {

// create the chart...
JFreeChart chart = ChartFactory.createLineChart3D(
"Java Standard Class Library", // chart title
null, // domain axis label
"Class Count", // range axis label
dataset, // data
PlotOrientation.VERTICAL, // orientation
false, // include legend
true, // tooltips
false // urls
);

chart.addSubtitle(new TextTitle("Number of Classes By Release"));
TextTitle source = new TextTitle(
"Source: Java In A Nutshell (5th Edition) "
+ "by David Flanagan (O'Reilly)"
);
source.setFont(new Font("SansSerif", Font.PLAIN, 10));
source.setPosition(RectangleEdge.BOTTOM);
source.setHorizontalAlignment(HorizontalAlignment.RIGHT);
chart.addSubtitle(source);

chart.setBackgroundPaint(Color.white);

CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setBackgroundPaint(Color.lightGray);
plot.setRangeGridlinesVisible(false);
URL imageURL = LineChartDemo1.class.getClassLoader().getResource(
"OnBridge11small.png");
if (imageURL != null) {
ImageIcon temp = new ImageIcon(imageURL);
// use ImageIcon because it waits for the image to load...
chart.setBackgroundImage(temp.getImage());
plot.setBackgroundPaint(new Color(0, 0, 0, 0));
}
// customise the range axis...
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

// customise the renderer...
LineAndShapeRenderer renderer
= (LineAndShapeRenderer) plot.getRenderer();
renderer.setShapesVisible(true);
renderer.setDrawOutlines(true);
renderer.setUseFillPaint(true);
renderer.setFillPaint(Color.white);
renderer.setSeriesStroke(0, new BasicStroke(3.0f));
renderer.setSeriesOutlineStroke(0, new BasicStroke(2.0f));
renderer.setSeriesShape(0, new Ellipse2D.Double(-5.0, -5.0, 10.0, 10.0));
return chart;
}

/**
* Creates a panel for the demo (used by SuperDemo.java).
*
* @return A panel.
*/
public static JPanel createDemoPanel() {
JFreeChart chart = createChart(createDataset());
return new ChartPanel(chart);
}

/**
* Starting point for the demonstration application.
*
* @param args ignored.
*/
public static void main(String[] args) {
LineChartDemo1 demo = new LineChartDemo1("JFreeChart - Line Chart Demo 1");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
}

}
...全文
284 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
SKYBUSY2000 2010-01-27
  • 打赏
  • 举报
回复
请问这个问题有解决吗 ?
我也遇见了同样的问题 只有一个数据点时不显示
nil2000 2009-07-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yilagong 的回复:]
横坐标细化。
[/Quote]
怎么细化啊!
nil2000 2009-07-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cuij7718 的回复:]
恩,可以判断一下,如果只有一个点,那么就再生成一个点,这个点和原点间隔很小,这样应该可以显示出来,而且视觉应该看不出来
[/Quote]

不行啊........因为如果多几个点的话,那图例什么的都会体现出来啊!

主要我发现如果1个点的话不是立体的就ok只要是createLineChart3D 就不可以啊!
cuij7718 2009-07-10
  • 打赏
  • 举报
回复
很多图形控件,线类型 都要求至少2个点,如果是闭合线,要求至少3个点
cuij7718 2009-07-10
  • 打赏
  • 举报
回复
恩,可以判断一下,如果只有一个点,那么就再生成一个点,这个点和原点间隔很小,这样应该可以显示出来,而且视觉应该看不出来
yilagong 2009-07-10
  • 打赏
  • 举报
回复
横坐标细化。
老张-AI 2009-07-09
  • 打赏
  • 举报
回复
帮顶

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧