Python:使用pycha快速绘制办公常用图二(使用样式定
在昨天的文章《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)
做一下单元测试: