前言:
现时我们对“c语言bar”大体比较讲究,兄弟们都想要剖析一些“c语言bar”的相关知识。那么小编同时在网络上汇集了一些关于“c语言bar””的相关文章,希望你们能喜欢,兄弟们一起来学习一下吧!图示:
知识点:
1、从数据库中得到数据
先定义了一个sql语句:
sql = "SELECT MONTH(经营部下单日期),COUNT(1) FROM 合同评审 WHERE 经营部下单日期 BETWEEN '{}-01-01' AND '{}-12-31' GROUP BY MONTH(经营部下单日期) ORDER BY MONTH(经营部下单日期)".format(年份,年份)
然后调用了一个mdb_query()方法:
result_list = db.mdb_query(sql)
db.py中封装了连接数据库、查询数据库、执行数据库操作的语句:
# -*- coding:utf-8 -*-__author__ = '86****20'#导入模块import pymssql#定义conndef mdb_conn(): conn = pymssql.connect(ip, username, password, databasename) return conn#增删改def mdb_sqlext(sql): try: conn = mdb_conn() cur = conn.cursor() cur.execute(sql) conn.commit() cur.close() conn.close() return True except: return False#查询记录def mdb_query(sql): try: conn = mdb_conn() cur = conn.cursor() cur.execute(sql) result = cur.fetchall() cur.close() conn.close() return result except Exception as e: print(e) return []
返回的数量是一个列表,列表中每一项元组,序号0对应MONTH(经营部下单日期),这是月份,序号1对应COUNT(1),这是合同数量。
使用列表推导式将每项的[0]元素取出,即月份
x = [i[0] for i in result_list]
再得到[1]为订单数合计
y = [i[1] for i in result_list]
x轴的标签是月份,正好跟x一样
xlabel = [i[0] for i in result_list]
2、柱状图绘制
plt.bar(x,y,align="center",width=0.5,bottom=0,color="r",tick_label=xlabel,hatch="/")
3、参数:
align:对齐,center/edge
width=0.8,柱体的宽度,如果改为1,两个柱体会挨在一起
bottom=0,柱体在y轴的地始数,如果定为100,假设一月份的数量是200,柱形图的顶部会跑到300,所以一般不建议设置此值
color:柱体颜色(框线与填充),这是图形,大多使用color,如果是文本的话一般使用c来代表颜色
tick_label:标签,列表
hatch:填充图案,有多种"o","/","\/","+"
另外还可以设置边框颜色、填充颜色、边框宽度等等,基本上能想得到的都能设置,只不过没有书籍有完整的去记录,更多参数可访问class Axes.bar()方法源码
代码:
import matplotlib.pyplot as pltimport numpy as npimport matplotlib as mplimport dbmpl.rcParams['font.sans-serif'] = ['SimHei']mpl.rcParams['axes.unicode_minus'] = False# 定义数据年份 = 2018sql = "SELECT MONTH(经营部下单日期),COUNT(1) FROM 合同评审 WHERE 经营部下单日期 BETWEEN '{}-01-01' AND '{}-12-31' GROUP BY MONTH(经营部下单日期) ORDER BY MONTH(经营部下单日期)".format(年份,年份)result_list = db.mdb_query(sql)x = [i[0] for i in result_list]y = [i[1] for i in result_list]xlabel = [i[0] for i in result_list]# 绘制柱状图plt.bar(x,y,align="center",bottom=0,width=0.8,color="r",tick_label=xlabel,hatch="/")# 设置标签plt.xlabel("月份")plt.ylabel("订单数量")# 设置标题plt.title("{}年订单数量统计".format(年份))# 设置y轴范围plt.ylim(0,500)# 设置辅助线maxnum = max(y)plt.axhline(y=maxnum,c="b",label="最大数量")mean = sum(y)/len(y)plt.axhline(y=mean,c="g",label="平均值")plt.legend()plt.show()
标签: #c语言bar