Java 无法访问JFreeChart绘图中的setDomainAxis()方法
我已经根据任务生成了一些图表,对于数据分析,我希望域轴能够根据我的规范进行缩放,而不是自动适应每个系列中的数据 我在这里找到了一个解决方案,看起来很简单: 然而,在我创建了我的绘图之后,使用下面的代码,似乎该方法不存在 setDomainAxis()方法是库中包含的方法,还是我必须自己创建它?或者我违反了java的一些与JFreeChart无关的基本规则?我是一名java程序员初学者,因此请相应地告知您的答案。谢谢 这是我的XYPlot类:Java 无法访问JFreeChart绘图中的setDomainAxis()方法,java,jfreechart,Java,Jfreechart,我已经根据任务生成了一些图表,对于数据分析,我希望域轴能够根据我的规范进行缩放,而不是自动适应每个系列中的数据 我在这里找到了一个解决方案,看起来很简单: 然而,在我创建了我的绘图之后,使用下面的代码,似乎该方法不存在 setDomainAxis()方法是库中包含的方法,还是我必须自己创建它?或者我违反了java的一些与JFreeChart无关的基本规则?我是一名java程序员初学者,因此请相应地告知您的答案。谢谢 这是我的XYPlot类: public class XYPlot extends
public class XYPlot extends JFrame {
private String title;
private String xAxis;
private String yAxis;
private XYSeriesCollection dataset;
public XYPlot(String header, String graphTitle, String xax, String yax) {
super(header);
xAxis = xax;
yAxis = yax;
title = graphTitle;
XYPlot myPlot;
// dataset = dat;
}
public void setTit(String newTitle){
title = newTitle;
}
public void setXAxis(String X){
xAxis = X;
}
public void setYAxis(String Y){
xAxis = Y;
}
public void passData(XYSeriesCollection data){
dataset = data;
}
public void createChart(XYSeriesCollection dataIn){
final JFreeChart chart = ChartFactory.createXYLineChart(
title,
xAxis,
yAxis,
dataIn
);
final ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(1200, 800));
setContentPane(chartPanel);
}
这是我的主程序中的绘图实现:
public static void seriesPlotter(XYSeriesCollection dataset, String title, String header, String xAxis, String yAxis) {
XYPlot myPlot = new XYPlot(header, title, xAxis, yAxis);
myPlot.createChart(dataset);
NumberAxis domain = new NumberAxis();
domain.setTickUnit(1);
myPlot.setDomainAxis(domain);
myPlot.pack();
myPlot.setVisible(true);
}
您的片段的使用与API不一致。特别是,没有这样的构造函数,也没有名为createChart()
的方法。确认您正在使用可用的当前版本1.0.19
方法是从单个子组件创建图表的极好指南。作为一个具体的例子,本文对其进行了概述。请注意轴是如何传递给XYPlot
构造函数的,从而无需显式调用setDomainAxis()
。概括地说
// axes
NumberAxis domain = new NumberAxis(xAxis);
NumberAxis range = new NumberAxis(yAxis);
// renderer
XYItemRenderer renderer = new XYLineAndShapeRenderer(true, false);
// plot
XYPlot plot = new XYPlot(dataset, domain, range, renderer);
// chart
JFreeChart chart = new JFreeChart(
title", JFreeChart.DEFAULT_TITLE_FONT, plot, false);
也许你可以在我编辑后再看一下,添加额外的代码
- 您的
是一个XYPlot
,它没有JFrame
方法;重命名类以避免冲突,例如setDomainAxis()
MyXYPlot
- 让重命名的类有一个成员变量来保存对
的引用,并添加一个方法来更新名称org.jfree.chart.plot.XYPlot
XYPlot myPlot; … public void setDomainAxisName(String name){ myPlot.getDomainAxis().setLabel(name); }
- 没有理由扩展
JFrame
使用
JFreeChart
进行实验是一个很好的学习机会。如果该方法不存在,您将得到一个编译器错误。但是该方法在XYPlot类中。也许先尝试设置setDomainAxis(),然后再设置createChart()…@petermm好的!我要试一试。我根据JFreeChart论坛和其他地方的教程编写了XYPlot类。我在任何地方都找不到这样一个方法是如何创建的示例,所以我假设它是库下载的一部分。谢谢@trashgood。我将在自己创建该方法的地方添加代码(在internet上的其他地方可以看到)。由于我的技术词汇为零,我还没有足够的能力理解API。也许你可以在我编辑后再看一下,添加额外的代码;一个完整的重新设计超出了网站的范围,但我已经回答了你最初的问题;您可以通过单击左侧的接受此答案;如果您提出了新问题,请附上一份说明您修改方法的报告。更新内容非常有用。我等待着点击复选标记,直到我觉得这个问题已经得到了合理的回答,并且给其他人时间为我提供其他独特的方法。我很清楚复选标记的作用,但您已经回答了我关于JFreeChart的几个问题,提供了与所问问题无关的信息,这让我觉得您只是想收集互联网上的酷点。我尊重你的知识,这显然是广泛的,远远大于我自己的知识,但我不是来为你证实这一点的;我的目标是为有趣的问题创造有用的答案;您的更新说明了几个常见的设计缺陷;除了回答你的问题之外,我很高兴向他们发表讲话;您应该只接受最能代表您采用的解决方案的答案;请随意将问题留给更好的答案。