다른 예제를 살펴 보았지만이 질문에 대한 답을 찾지 못했습니다. 자바에서 jFreePanel을 사용하고 있습니다. X 축에 연도 변경 표시 (예 : 2005, 2006, 2007 등)라는 선 차트를 만들려고합니다. 데이터는 매일 취해진 판독 값으로 구성되어 있으므로 각 데이터를 표시 할 수는 없지만이를 연도별로 분해하는 것은 매우 합리적입니다. 나는 그것을하는 방법을 알아 내려고 애 쓰고있다.jFreePanel을 사용하여 꺾은 선형 차트에서 X 축에 연도 추가
그래서, 대신에
X-axis __________________________________________________________________________________
2000-01-01 to 2009-06-30
그것은 다음과 같아야합니다
...
X-axis __________________________________________________________________________________
2000 2001 2002 2003 2004 2005 2006 2007 2008 2009
2000-01-01 to 2009-06-30
관련 코드는 여기에 ...
private JFreeChart createChart(final CategoryDataset dataset) {
// create the chart...
final JFreeChart chart = ChartFactory.createLineChart(
site, // chart title
firstDate + " to " + DBChart.lastDate, // domain axis label
"Height", // range axis label
dataset, // data
PlotOrientation.VERTICAL, // orientation
false, // exclude legend
false, // tooltips
false // urls
);
chart.setBackgroundPaint(Color.white);
final CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setBackgroundPaint(Color.lightGray);
plot.setRangeGridlinePaint(Color.white);
// Customize the range axis...
final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
chart.getCategoryPlot().getRangeAxis().setRange(getLowestLow(data), getHighestHigh(data));
rangeAxis.setAutoRangeIncludesZero(false);
// Customize the renderer...
final LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();
renderer.setSeriesShapesVisible(0, false);
return chart;
}
private double getLowestLow(Object data[][]) {
double lowest;
lowest = Double.parseDouble(data[0][2].toString());
System.out.println(lowest);
for (int i = 1; i < data.length - 1; i++) {
if (data[i][2] != null) {
if (Double.parseDouble(data[i][2].toString()) < lowest) {
lowest = Double.parseDouble(data[i][2].toString());
}
}
}
return lowest;
}
private double getHighestHigh(Object data[][]) {
double highest;
highest = Double.parseDouble(data[0][2].toString());
for (int i = 1; i < data.length - 1; i++) {
if (data[i][2] != null) {
if (Double.parseDouble(data[i][2].toString()) > highest) {
highest = Double.parseDouble(data[i][2].toString());
}
}
}
return highest;
}
감사의 ... 다른 스레드에서 Y 축을 사용자 정의 할 수는 있지만 X 축으로 원하는 작업을 수행하는 방법에 대한 정보는 찾지 못하고 사용하지도 않았습니다. 이 라이브러리를 전에. 어떤 도움을 주시면 감사하겠습니다.
설명하는 문제가있는 [전체 예제] (http://stackoverflow.com/help/mcve)를 포함하여 질문을 편집하십시오. – trashgod
@trashgod 나는 그것이 도움이되기를 바랍니다. – Iakona
응답을 얻지 못했기 때문에 상사와 JFreeChart 개발자 가이드를 구입할 수있었습니다. 누구든지 비슷한 것을 성취해야한다면 필자는 그것이 필요하다고 생각합니다. 그들은 다른 그래프의 예제를 많이 가지고 있으며 그래프를 어떻게 생성했는지 볼 수 있도록 코드를 제공합니다. 자바로 많은 그래프를 작성한다면이 가이드를 적극 추천합니다. – Iakona