在昨天的文章《Python:使用pycha快速繪製辦公常用圖(餅圖、垂直長條圖、水平長條圖、散佈圖等七種圖形)》中,講述了使用pycha繪製各種辦圖常見圖,今天學習了下如何定製這些圖表的樣式,在pycha模組的源碼中,char.py檔案中定義了預設的樣式格式,如下:
DEFAULT_OPTIONS = Option( axis=Option( lineWidth=1.0, lineColor='#0f0000', tickSize=3.0, labelColor='#666666', labelFont='Tahoma', labelFontSize=9, labelWidth=50.0, tickFont='Tahoma', tickFontSize=9, x=Option( hide=False, ticks=None, tickCount=10, tickPrecision=1, range=None, rotate=None, label=None, interval=0, showLines=False, ), y=Option( hide=False, ticks=None, tickCount=10, tickPrecision=1, range=None, rotate=None, label=None, interval=0, showLines=True, ), ), background=Option( hide=False, baseColor=None, chartColor='#f5f5f5', lineColor='#ffffff', lineWidth=1.5, ), legend=Option( opacity=0.8, borderColor='#000000', borderWidth=2, hide=False, position=Option(top=20, left=40, bottom=None, right=None), ), padding=Option( left=10, right=10, top=10, bottom=10, ), stroke=Option( color='#ffffff', hide=False, shadow=True, width=2 ), yvals=Option( show=False, inside=False, fontSize=11, fontColor='#000000', skipSmallValues=True, snapToOrigin=False, renderer=None ), fillOpacity=1.0, shouldFill=True, barWidthFillFraction=0.75, pieRadius=0.4, colorScheme=Option( name='gradient', args=Option( initialColor=DEFAULT_COLOR, colors=None, ), ), title=None, titleColor='#000000', titleFont='Tahoma', titleFontSize=12, encoding='utf-8',)
有了它,我們可以根據自己的需要定義各種樣式。
如下(代碼中只列舉了主函數,其他函數請見上篇博文):
if __name__ == '__main__': ''' Function:使用pycha畫各種圖表 Input:NONE Output: NONE author: socrates blog:http://blog.csdn.net/dyx1024 date:2012-02-29 ''' #資料來源 dataSet=( ('iphone',((0,1),(1,3),(2,2.5))), ('htc',((0,2),(1,4),(2,3))), ('hw',((0,5),(1,1,),(2,0.5))), ('zte',((0,3),(1,2,),(2,1.5))), ) # #映像屬性定義# options={ # 'legend':{'hide':False}, # 'title':'手機銷售量分布圖(by dyx1024)',# 'titleColor':'#0000ff',# 'titleFont':'字型',# 'background':{'chartColor': '#ffffff'}, # 'axis':{'labelColor':'#ff0000'},# } #自訂樣式 options1={ 'axis': { 'x': { #x軸 'label': 'month', #標籤名稱 'rotate': 25, }, 'y': { #y軸 'tickCount': 8, #橫線個數 'rotate': 25, 'label': 'count' } }, 'background': { 'chartColor': '#ffffff', #圖表背景色 'baseColor': '#ffffff', #邊框顏色 'lineColor': '#0000ff' #橫線顏色 }, 'colorScheme': { 'name': 'gradient', 'args': { 'initialColor': '#CD3700', #圖表顏色 }, }, 'legend': { 'hide': True, #是否隱藏表徵圖樣本 }, 'padding': { 'left': 10, #左邊框 'bottom': 10, #底邊框 }, 'title': 'pychar test(by dyx1024)' #圖片標題 } surface = set_charvalue() #根據需要調用不同函數畫不同形狀的圖 #draw_pie(surface, options, dataSet) #draw_vertical_bar(surface, options, dataSet) #draw_horizontal_bar(surface, options, dataSet) #draw_scatterplot(surface, options, dataSet) #draw_stackedverticalbarChar(surface, options, dataSet) #draw_stackedhorizontalbarChart(surface, options, dataSet) #draw_line(surface, options, dataSet) #draw_vertical_bar(surface, options1, dataSet) draw_line(surface, options1, dataSet)
做一下單元測試: