ACE繪製的圖形,座標軸上的刻度值,要麼顯示爲數字,要麼顯示爲時間:
那麼能不能在座標軸上顯示自己的內容,比如文字呢?
這需要使用 XYMultipleSeriesRenderer 的addTextLabel(int,String)方法。
該方法接收一個int參數,用於指定要顯示文字的X軸座標,比如在X軸座標1的位置顯示“昆明”,則 addTextLabel(1,”昆明”);
當然,原來tick數字1仍然會顯示,這樣數字“1” 和文字標籤“昆明”會重疊再一起,因此,我們還需要用 setXLabels(0) 把數字標籤屏蔽掉。
具體代碼如下面所示:
// 設置系列 renderer
public XYMultipleSeriesRenderer getRenderer() {
// 構造一個多系列 render (多個 renderer 的集合)
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
renderer.setAxisTitleTextSize(16); // 座標軸標題字體大小: 16
renderer.setChartTitleTextSize(20); // 圖表標題字體大小: 20
renderer.setLabelsTextSize(15); // 軸標籤字體大小: 15
renderer.setLegendTextSize(15); // 圖例字體大小: 15
renderer.setShowGrid( false ); // 設置網格顯示
renderer.setXAxisMin( xMin ); // 設置 X 軸起點
renderer.setAxesColor(Color. WHITE ); // 設置 XY 軸顏色
renderer.setLabelsColor(Color. GRAY ); // 設置軸標籤顏色
renderer.setXAxisMax( xMax ); // 設置 X 軸最大點
renderer.setYAxisMin( yMin ); // 設置 Y 軸起點
// renderer.setYAxisMax(yMax);
renderer.setMargins( new int [] {20, 30, 15, 0}); // 圖形 4 邊距
renderer.setDisplayChartValues( true ); // 在柱子頂端顯示數值
renderer.setXLabelsAngle(-25); // 設置 X 軸標籤傾斜角度 (clockwise degree)
renderer.setXLabels(0); // 設置 X 軸不顯示數字(改用我們手動添加的文字標籤)
int i=0;
for (Map<String,Object> map: maps ){
i++;
String name=map.get( "rowname" ).toString();
renderer.addTextLabel(i, name);
}
// 構造其中一個系列的 render
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(Color. YELLOW );
renderer.addSeriesRenderer(r);
return renderer;
}
運行效果如下:
現在x軸座標上的數字標籤被我們替換爲一系列雲南省地名
http://blog.csdn.net/kmyhy/article/details/6338778