JFreechart的Axis的方法总结

   1. 一些关于AXIS类的方法: 
   2. Axis 类: 
   3. void setVisible(boolean flag)坐标轴是否可见 
   4. void setAxisLinePaint(Paint paint)坐标轴线条颜色(3D轴无效) 
   5. void setAxisLineStroke(Stroke stroke) 坐标轴线条笔触(3D轴无效) 
   6. void setAxisLineVisible(boolean visible)坐标轴线条是否可见(3D轴无效) 
   7. void setFixedDimension(double dimension)(用于复合表中对多坐标轴的设置) 
   8. void setLabel(String label)坐标轴标题 
   9. void setLabelFont(Font font)坐标轴标题字体 
  10. void setLabelPaint(Paint paint)坐标轴标题颜色 
  11. void setLabelAngle(double angle)`坐标轴标题旋转角度(纵坐标可以旋转) 
  12. void setTickLabelFont(Font font)坐标轴标尺值字体 
  13. void setTickLabelPaint(Paint paint)坐标轴标尺值颜色 
  14. void setTickLabelsVisible(boolean flag)坐标轴标尺值是否显示 
  15. void setTickMarkPaint(Paint paint)坐标轴标尺颜色 
  16. void setTickMarkStroke(Stroke stroke) 坐标轴标尺笔触 
  17. void setTickMarksVisible(boolean flag)坐标轴标尺是否显示 
  18. ValueAxis(Axis) 类: 
  19. void setAutoRange(boolean auto)自动设置数据轴数据范围 
  20. void setAutoRangeMinimumSize(double size)自动设置数据轴数据范围时数据范围的最小跨度 
  21. void setAutoTickUnitSelection(boolean flag)数据轴的数据标签是否自动确定(默认为true) 
  22. void setFixedAutoRange(double length)数据轴固定数据范围(设置100的话就是显示MAXVALUE到MAXVALUE-100那段数据范围) 
  23. void setInverted(boolean flag)数据轴是否反向(默认为false) 
  24. void setLowerMargin(double margin)数据轴下(左)边距 
  25. void setUpperMargin(double margin)数据轴上(右)边距 
  26. void setLowerBound(double min)数据轴上的显示最小值 
  27. void setUpperBound(double max)数据轴上的显示最大值 
  28. void setPositiveArrowVisible(boolean visible)是否显示正向箭头(3D轴无效) 
  29. void setNegativeArrowVisible(boolean visible)是否显示反向箭头(3D轴无效) 
  30. void setVerticalTickLabels(boolean flag)数据轴数据标签是否旋转到垂直 
  31. void setStandardTickUnits(TickUnitSource source) 数据轴的数据标签(可以只显示整数标签,需要将AutoTickUnitSelection设false) 
  32. NumberAxis(ValueAxis) 类: 
  33. void setAutoRangeIncludesZero(boolean flag)是否强制在自动选择的数据范围中包含0 
  34. void setAutoRangeStickyZero(boolean flag)是否强制在整个数据轴中包含0,即使0不在数据范围中 
  35. void setNumberFormatOverride(NumberFormat formatter) 数据轴数据标签的显示格式 
  36. void setTickUnit(NumberTickUnit unit) 数据轴的数据标签(需要将AutoTickUnitSelection设false) 
  37. DateAxis(ValueAxis) 类: 
  38. void setMaximumDate(Date maximumDate) 日期轴上的最小日期 
  39. void setMinimumDate(Date minimumDate) 日期轴上的最大日期 
  40. void setRange(Date lower,Date upper) 日期轴范围 
  41. void setDateFormatOverride(DateFormat formatter) 日期轴日期标签的显示格式 
  42. void setTickUnit(DateTickUnit unit) 日期轴的日期标签(需要将AutoTickUnitSelection设false) 
  43. void setTickMarkPosition(DateTickMarkPosition position) 日期标签位置(参数常量在org.jfree.chart.axis.DateTickMarkPosition类中定义) 
  44. CategoryAxis(Axis) 类: 
  45. void setCategoryMargin(double margin)分类轴边距 
  46. void setLowerMargin(double margin)分类轴下(左)边距 
  47. void setUpperMargin(double margin)分类轴上(右)边距 
  48. void setVerticalCategoryLabels(boolean flag)分类轴标题是否旋转到垂直 
  49. void setMaxCategoryLabelWidthRatio(float ratio)分类轴分类标签的最大宽度 
  50. jfreechart 设置技巧 
  51.  
  52. 1. 横坐标内容竖立   
  53.       XYPlot xyplot = jfreechart.getXYPlot(); 
  54.         DateAxis dateaxis = (DateAxis)xyplot.getDomainAxis(); 
  55.         dateaxis.setTickUnit(new DateTickUnit(1, 1, new SimpleDateFormat("MMM-yyyy"))); 
  56.         dateaxis.setVerticalTickLabels(true); 
  57.  
  58. 2.设置最大坐标范围 
  59.  1)ValueAxis axis = xyplot.getRangeAxis() ; 
  60.        axis.setRange(0,100) ; 
  61.        xyplot.setRangeAxis(axis);  
  62.  
  63.   2)numberaxis1.setUpperBound(6500D);//最大值 
  64.      numberaxis1.setLowerBound(5500D);//最小值 
  65. 2.设置时间轴的间隔时间 
  66.     dateaxis.setTickUnit(new DateTickUnit(DateTickUnit.DAY,1));//设置时间间隔为一天 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: JFreeChart是一个Java类库,可以用于创建各种类型的图表,包括折线图、柱状图、饼图等等。要创建动态折线图,可以使用JFreeChart的实时图表功能。 以下是使用JFreeChart创建动态折线图的步骤: 1.导入JFreeChart库。 2.创建一个折线图对象。 3.创建一个数据集对象。 4.创建一个图表面板对象。 5.将图表面板添加到Swing容器中。 6.创建一个定时器对象。 7.在定时器的actionPerformed方法中更新数据集和图表。 以下是具体实现: 1.导入JFreeChart库。 ```java 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.axis.ValueAxis; import org.jfree.chart.plot.XYPlot; import org.jfree.data.time.DynamicTimeSeriesCollection; import org.jfree.data.time.Second; import org.jfree.data.xy.XYDataset; import org.jfree.ui.ApplicationFrame; import javax.swing.*; import java.awt.*; import java.util.Random; ``` 2.创建一个折线图对象。 ```java JFreeChart chart = ChartFactory.createTimeSeriesChart("Dynamic Line Chart", "Time", "Value", createDataset(), true, true, false); ``` 3.创建一个数据集对象。 ```java private static final int COUNT = 200; private static final int INTERVAL = 1000; private static final float SCALE = 100; private static final Random random = new Random(); private static float[] data = new float[COUNT]; private static int index = 0; private static DynamicTimeSeriesCollection createDataset() { data = new float[COUNT]; index = 0; for (int i = 0; i < data.length; i++) { data[i] = 50; } return new DynamicTimeSeriesCollection(1, COUNT, new Second()); } ``` 4.创建一个图表面板对象。 ```java ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new Dimension(640, 480)); ``` 5.将图表面板添加到Swing容器中。 ```java JFrame frame = new JFrame("Dynamic Line Chart"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(chartPanel); frame.pack(); frame.setVisible(true); ``` 6.创建一个定时器对象。 ```java Timer timer = new Timer(INTERVAL, e -> { float newData = (float) (SCALE * random.nextGaussian() + 50); data[index] = newData; index++; dataset.advanceTime(); dataset.appendData(new float[][]{data}, 0, 1); }); timer.setInitialDelay(0); timer.start(); ``` 7.在定时器的actionPerformed方法中更新数据集和图表。 ```java private static final DynamicTimeSeriesCollection dataset = createDataset(); ``` 完整代码如下: ```java 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.axis.ValueAxis; import org.jfree.chart.plot.XYPlot; import org.jfree.data.time.DynamicTimeSeriesCollection; import org.jfree.data.time.Second; import org.jfree.data.xy.XYDataset; import org.jfree.ui.ApplicationFrame; import javax.swing.*; import java.awt.*; import java.util.Random; public class DynamicLineChart extends ApplicationFrame { private static final int COUNT = 200; private static final int INTERVAL = 1000; private static final float SCALE = 100; private static final Random random = new Random(); private static float[] data = new float[COUNT]; private static int index = 0; private static final DynamicTimeSeriesCollection dataset = createDataset(); private static DynamicTimeSeriesCollection createDataset() { data = new float[COUNT]; index = 0; for (int i = 0; i < data.length; i++) { data[i] = 50; } return new DynamicTimeSeriesCollection(1, COUNT, new Second()); } public DynamicLineChart(String title) { super(title); JFreeChart chart = ChartFactory.createTimeSeriesChart("Dynamic Line Chart", "Time", "Value", dataset, true, true, false); XYPlot plot = chart.getXYPlot(); ValueAxis domainAxis = plot.getDomainAxis(); domainAxis.setAutoRange(true); ValueAxis rangeAxis = plot.getRangeAxis(); rangeAxis.setRange(0, 100); NumberAxis numberAxis = (NumberAxis) plot.getRangeAxis(); numberAxis.setAutoRangeIncludesZero(false); ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new Dimension(640, 480)); setContentPane(chartPanel); Timer timer = new Timer(INTERVAL, e -> { float newData = (float) (SCALE * random.nextGaussian() + 50); data[index] = newData; index++; dataset.advanceTime(); dataset.appendData(new float[][]{data}, 0, 1); }); timer.setInitialDelay(0); timer.start(); } public static void main(String[] args) { DynamicLineChart chart = new DynamicLineChart("Dynamic Line Chart"); chart.pack(); chart.setVisible(true); } } ``` ### 回答2: JFreeChart是一个开源的Java图表库,可以用来创建各种类型的图表,包括动态折线图。动态折线图是一种实时更新数据的图表,可以实时展示数据的变化趋势。 要创建一个动态折线图,我们需要使用JFreeChart库的一些类和方法。首先,我们可以创建一个折线图的数据集,可以是一个默认的XYSeries对象,用于存储数据点的坐标。然后,我们可以创建一个ChartPanel对象,它是Swing组件,用于显示折线图。接下来,我们可以调用动态更新数据的方法,例如addOrUpdate(),来更新图表中的数据。 为了实现动态效果,我们可以使用一个计时器,例如java.util.Timer类,来定时更新数据和刷新图表。我们可以在计时器的run()方法中更新数据集,并通过ChartPanel对象的repaint()方法重新绘制图表。 代码示例如下: ```java import java.awt.*; import java.util.*; import javax.swing.*; import org.jfree.chart.*; import org.jfree.data.xy.*; import org.jfree.ui.*; public class DynamicLineChart extends ApplicationFrame { private XYSeries dataSeries; public DynamicLineChart(String title) { super(title); // 创建数据集 dataSeries = new XYSeries("数据"); XYSeriesCollection dataset = new XYSeriesCollection(); dataset.addSeries(dataSeries); // 创建图表 JFreeChart chart = ChartFactory.createXYLineChart( "动态折线图", "X", "Y", dataset, PlotOrientation.VERTICAL, true, true, false); // 创建图表面板 ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new java.awt.Dimension(500, 270)); setContentPane(chartPanel); } public void updateData() { // 模拟数据更新 Random random = new Random(); double x = dataSeries.getItemCount(); double y = random.nextDouble() * 100; // 添加新的数据点或更新已有数据点 dataSeries.addOrUpdate(x, y); } public static void main(String[] args) { DynamicLineChart chart = new DynamicLineChart("动态折线图示例"); chart.pack(); RefineryUtilities.centerFrameOnScreen(chart); chart.setVisible(true); // 定时更新数据和刷新图表 Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() { chart.updateData(); chart.repaint(); } }, 0, 1000); // 每秒更新一次 } } ``` 以上就是使用JFreeChart创建动态折线图的基本步骤和示例代码。运行程序后,将会看到一个实时更新数据的折线图窗口,每秒钟更新一次数据点,并展示出数据的变化趋势。 ### 回答3: JFreeChart是一个功能强大的Java开源图表库,可以用来创建各种类型的图表,包括动态折线图。 要使用JFreeChart创建一个动态折线图,首先需要准备好数据集。数据集是一个包含数据点的集合,每个数据点由两个值组成,一个是横坐标的值,一个是纵坐标的值。 在创建数据集后,可以创建一个折线图对象,并将数据集传递给它。然后,可以对折线图进行自定义设置,如设置标题、坐标轴标签等。 接下来,需要创建一个绘图面板,并将折线图添加到绘图面板中。 然后,可以创建一个窗口,将绘图面板添加到窗口中,并设置窗口的大小和可见性。 为了实现动态效果,可以在一个循环中更新数据集的值,然后通过调用绘图面板的repaint()方法来重绘图表。 例如,可以使用一个计时器对象每隔一定时间更新数据集的值,并重新绘制图表。这样就可以实现图表的动态更新。 最后,当不再需要动态折线图时,可以通过调用窗口的dispose()方法来释放资源。 总之,使用JFreeChart创建动态折线图的关键步骤是准备数据集、创建折线图对象、设置图表属性、创建绘图面板、创建窗口、更新数据集并重绘图表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值