2017-07-26 122 views
1

我想繪製一個簡單的折線圖,幾乎一切都很好,我正在使用一個簡單的代碼填充我的數據集,如下所示:JFreeChart顯示三個點(...)代替X軸上的值

DefaultCategoryDataset dataset = new DefaultCategoryDataset(); 
dataset.addValue(-10 , "S21" , "1000"); 
dataset.addValue(-20 , "S21" , "1001"); 
dataset.addValue(-25 , "S21" , "1002"); 
dataset.addValue(-30 , "S21" , "1003"); 
dataset.addValue(-25 , "S21" , "1004"); 
... 

然後我創建了一個折線圖:

lineChart = ChartFactory.createLineChart(
    "S21", 
    "Frequency (MHz)", 
    "Value (db)", 
    dataset, 
    PlotOrientation.VERTICAL, 
    true, 
    true, 
    false); 

,我必須在X軸上的值1000 1001 1002 ...等等。無論如何,我發現,如果我添加了一些積分,jfreechart的呢x軸上沒有足夠的空間,並且在值的位置顯示三個點(...)。這很奇怪,我希望有儘可能多的點數(例如1000,如果分辨率不錯,但是分辨率很好,但是隻顯示這些點的子集),所以我不會耗盡空間:

例如要點:1000,1001,1002,...,2000(1000點)

標籤:1000,1100,1200,...,1900,2000(10個標籤)

這可能嗎?我在網上尋找解決方案,但沒有發現任何有用的東西。

回答

1

您可能需要幾種方法結合起來:

  • 改變CategoryLabelPositions的建議here

    CategoryAxis domainAxis = plot.getDomainAxis(); 
    domainAxis.setCategoryLabelPositions(
        CategoryLabelPositions.createUpRotationLabelPositions(Math.PI/2.0)); 
    
  • 調整圖表的大小,建議here

    ChartPanel piePanel = new ChartPanel(lineChart) { 
        @Override 
        public Dimension getPreferredSize() { 
         return new Dimension(640, 480); 
        } 
    }; 
    
  • 任選地,根據類別的數量,使用SlidingCategoryDataset,所建議here

  • 可選地,如果類別形成連續的域,則切換到XY圖,例如, ChartFactory.createXYLineChart()

image

+1

非常感謝您,用折線圖其實我可以只與尺寸播放或旋轉標籤;但我可以用XY折線圖管理我的案例。它似乎工作正常,謝謝! –