Java 对于双轴条形图,增加jfreechart中两个间隔之间的间距
目前,我正在使用JFreeChart绘制双轴条形图。间隔棒彼此非常接近。因此,图中未显示间隔的标签。如何增加酒吧之间的空间Java 对于双轴条形图,增加jfreechart中两个间隔之间的间距,java,jfreechart,Java,Jfreechart,目前,我正在使用JFreeChart绘制双轴条形图。间隔棒彼此非常接近。因此,图中未显示间隔的标签。如何增加酒吧之间的空间 CategoryAxis domainAxis = new CategoryAxis("Value"); domainAxis.setAxisLinePaint(Color.blue); domainAxis.setLowerMargin(0.05); domainAxis.setUpperMargin(0.05); NumberAx
CategoryAxis domainAxis = new CategoryAxis("Value");
domainAxis.setAxisLinePaint(Color.blue);
domainAxis.setLowerMargin(0.05);
domainAxis.setUpperMargin(0.05);
NumberAxis rangeAxis = new NumberAxis("Category 2");
BarRenderer renderer1 = new BarRenderer();
renderer1.setMaximumBarWidth(.50);
renderer1.setSeriesPaint(0, Color.blue);
renderer1.setShadowVisible(false);
CategoryPlot plot = new CategoryPlot(dataset1, domainAxis, rangeAxis, renderer1);
JFreeChart chart = new JFreeChart("", plot);
chart.setBackgroundPaint(Color.WHITE);
plot.setBackgroundPaint(Color.WHITE);
plot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
plot.setDataset(1, dataset2);
plot.mapDatasetToRangeAxis(1, 1);
ValueAxis axis2 = new NumberAxis("Category 1");
plot.setRangeAxis(1, axis2);
plot.setRangeAxisLocation(1, AxisLocation.BOTTOM_OR_RIGHT);
BarRenderer renderer2 = new BarRenderer();
renderer2.setSeriesPaint(0, Color.green);
renderer2.setMaximumBarWidth(.100);
renderer2.setShadowVisible(false);
plot.setRenderer(1, renderer2);
return chart;
完整代码:
import java.awt.Dimension;
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.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class BarChartDemo7 extends ApplicationFrame {
static class LabelGenerator extends StandardCategoryItemLabelGenerator {
public String generateLabel(CategoryDataset dataset, int series,
int category) {
return dataset.getRowKey(series).toString();
}
}
public BarChartDemo7(String title) {
super(title);
JPanel chartPanel = createDemoPanel();
chartPanel.setPreferredSize(new Dimension(500, 270));
setContentPane(chartPanel);
}
private static CategoryDataset createDataset() {
String series1 = "First";
String series2 = "Second";
String series3 = "Third";
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for(int i=0;i<120;i++){
dataset.addValue(i, series1, Integer.toString(i));
}
for(int i=0;i<120;i++){
dataset.addValue(i, series2, Integer.toString(i));
}
for(int i=0;i<120;i++){
dataset.addValue(i, series3, Integer.toString(i));
}
return dataset;
}
private static JFreeChart createChart(CategoryDataset dataset) {
JFreeChart chart = ChartFactory.createBarChart(
"Bar Chart Demo 7",
"Category",
"Value",
dataset,
PlotOrientation.HORIZONTAL,
false,
true,
false
);
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setRangePannable(true);
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
BarRenderer renderer = (BarRenderer) plot.getRenderer();
renderer.setDrawBarOutline(false);
renderer.setItemMargin(0.10);
return chart;
}
public static JPanel createDemoPanel() {
JFreeChart chart = createChart(createDataset());
ChartPanel panel = new ChartPanel(chart);
panel.setMouseWheelEnabled(true);
return panel;
}
public static void main(String[] args) {
BarChartDemo7 demo = new BarChartDemo7(
"");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
}
}
导入java.awt.Dimension;
导入javax.swing.JPanel;
导入org.jfree.chart.ChartFactory;
导入org.jfree.chart.ChartPanel;
导入org.jfree.chart.JFreeChart;
导入org.jfree.chart.axis.NumberAxis;
导入org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
导入org.jfree.chart.plot.CategoryPlot;
导入org.jfree.chart.plot.PlotOrientation;
导入org.jfree.chart.renderer.category.derer;
导入org.jfree.data.category.CategoryDataset;
导入org.jfree.data.category.DefaultCategoryDataset;
导入org.jfree.ui.ApplicationFrame;
导入org.jfree.ui.RefineryUtilities;
公共类BarChartDemo7扩展了ApplicationFrame{
静态类LabelGenerator扩展了StandardCategoryItemLabelGenerator{
公共字符串generateLabel(CategoryDataset数据集,int系列,
整数(类别){
返回dataset.getRowKey(series.toString();
}
}
公共条形图Demo7(字符串标题){
超级(标题);
JPanel chartPanel=createDemoPanel();
chartPanel.setPreferredSize(新尺寸(500270));
setContentPane(图表面板);
}
私有静态CategoryDataset createDataset(){
字符串series1=“第一”;
字符串series2=“秒”;
字符串series3=“第三”;
DefaultCategoryDataset数据集=新的DefaultCategoryDataset();
for(int i=0;i.No的可能重复项不是。作为setMaximumBarWidth()在我的例子中没有帮助,因为间隔的数量更多,jfreechart试图容纳所有的间隔,因此它们都是重叠的。我试图增加jfreechart的窗口大小,并将其放入滚动窗格,但这也没有帮助。它只是使图表变大,间隔仍然重叠。我猜,没有。可能重复。我已用完整的示例编辑了我的问题。请使用SlidingCategoryDataset
中所示的SlidingCategoryDatasetDemo1
。可能重复的。不,它不是。作为setMaximumBarWidth()在我的例子中没有帮助,因为间隔的数量更多,jfreechart试图容纳所有的间隔,因此它们都是重叠的。我试图增加jfreechart的窗口大小,并将其放入滚动窗格,但这也没有帮助。它只是使图表变大,间隔仍然重叠。我猜,没有。可能重复。我已用完整的示例编辑了我的问题。请使用SlidingCategoryDataset
,如SlidingCategoryDatasetDemo1
所示。