Index > 円グラフを描画するJava2Dライブラリ(java2d)
Tue, November 20, 2007

円グラフを描画するJava2Dライブラリ(java2d)

普通、円グラフと言えば、複数の項目があり、その割合を表現するグラフですが、 今回は、指定した一つの項目の全体に占める割合だけを表現したい、 というケースで使用した。
既存のライブラリ(JFreeChartなど)や表計算ソフトでは、 このような円グラフの作り方がわからなかったので、 Java2D+jythonで画像を生成するコードを書きました。

完成した円グラフ

コード(jython)

pieChart.py

import java as java
import javax as javax

RATE=0.35
OUTFILE="pieChart.png"


KEY_ANTIALIASING= java.awt.RenderingHints.KEY_ANTIALIASING
VALUE_ANTIALIAS_ON=java.awt.RenderingHints.VALUE_ANTIALIAS_ON



def paintPaiChart(g2,loc,size):
    g2.setColor(java.awt.Color.LIGHT_GRAY)

    # paint arc
    kakudo=java.lang.Math.round(360*RATE)
    g2.fillArc(loc.x,loc.y,size.width,size.height,90,kakudo*-1)

    # paint circle
    g2.drawOval(loc.x,loc.y,size.width,size.height)



loc=java.awt.Point(0,0)
size=java.awt.Dimension(100,100)

type=java.awt.image.BufferedImage.TYPE_4BYTE_ABGR 
img=java.awt.image.BufferedImage(size.width+1,size.height+1,type)

g2=img.getGraphics()
g2.setRenderingHint(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON);

# paint background
#g2.setColor(java.awt.Color.WHITE)
#g2.fill(java.awt.Rectangle(loc.x,loc.y,size.width+1,size.height+1))

paintPaiChart(g2,loc,size)

g2.dispose()

out=java.io.FileOutputStream(OUTFILE)
javax.imageio.ImageIO.write(img,"PNG",out)
out.close()
 Twitter
follow me on Twitter
 Categories