matplotlib绘制柱状图之基本配置——万能模板案例

举报
王小王-123 发表于 2022/03/26 00:20:08 2022/03/26
【摘要】 连接数据库案例 import pymysql # pip install pymysql安装,用来连接mysql数据库import pandas as pd # 用来做数据导入(pd.read_sql_query() 执行sql语句得到结果df)import matplotlib.pyplot as plt # 用来画图(plt.p...

连接数据库案例


  
  1. import pymysql # pip install pymysql安装,用来连接mysql数据库
  2. import pandas as pd # 用来做数据导入(pd.read_sql_query() 执行sql语句得到结果df)
  3. import matplotlib.pyplot as plt # 用来画图(plt.plot()折线图, plt.bar()柱状图,....)
  4. plt.rcParams['font.sans-serif'] = 'SimHei' # 设置中文字体支持中文显示
  5. plt.rcParams['axes.unicode_minus'] = False # 支持中文字体下显示'-'号
  6. # figure 分辨率 800x600
  7. plt.rcParams['figure.figsize'] = (6,4) # 8x6 inches
  8. plt.rcParams['figure.dpi'] = 100 # 100 dot per inch
  9. # 1. 连接MySQL数据库: 创建数据库连接
  10. conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='root',db='mydb')
  11. # 2 创建一个sql语句
  12. # -- 统计每个销售经理2019年的利润总额
  13. sql = r"SELECT MANAGER, SUM(PROFIT) as TotalProfit FROM orders where FY='2019' group by MANAGER"
  14. # 3 执行sql语句获取统计查询结果
  15. df = pd.read_sql_query(sql, conn)
  16. # 4. 基于DataFrame结果集作图
  17. plt.figure(figsize=(6,4),dpi=120)
  18. plt.bar(df['MANAGER'], df['TotalProfit'])
  19. plt.grid(axis='y')
  20. plt.title("每个销售经理2019年的利润总额")
  21. plt.ylabel("利润额")
  22. for index,value in df['TotalProfit'].items():
  23. plt.text(index,value,round(value),ha='center',va='bottom',color='k')

 柱状图绘制


  
  1. import matplotlib.pyplot as plt
  2. # 设置中文字体
  3. plt.rcParams['axes.unicode_minus'] = False # 不使用中文减号
  4. plt.rcParams['font.sans-serif'] = 'FangSong' # 设置字体为仿宋(FangSong)
  5. plt.figure(figsize=(5,3),dpi=120)
  6. plt.bar(data.index, data.values, width=0.1, align='edge', bottom=100000 )
  7. # plt.grid(axis='x')
  8. plt.title("每个销售经理2019年的利润总额")
  9. plt.ylabel("利润额")


  
  1. plt.figure(figsize=(6,6),dpi=100)
  2. plt.bar(data.index, data.values, width=0.6, align='edge', bottom=0-data.values )
  3. plt.bar(data.index, data.values, width=0.6, align='edge', bottom=0 )
  4. plt.grid(axis='x')
  5. plt.title("每个销售经理2019年的利润总额")
  6. plt.ylabel("利润额")

堆叠柱状图——尾部


  
  1. txtfile = r'orders.txt'
  2. df_txt = pd.read_csv(txtfile)
  3. profit = df_txt[df_txt['FY']==2019].groupby('OPERATOR')['PROFIT'].sum()
  4. price = df_txt[df_txt['FY']==2019].groupby('OPERATOR')['PRICE'].sum()
  5. plt.rcParams['font.sans-serif'] = 'KaiTi' # 设置全局字体为中文 楷体
  6. plt.rcParams['axes.unicode_minus'] = False # 不使用中文减号
  7. plt.figure(figsize=(10,4),dpi=120)
  8. plt.bar(price.index, price.values, label='price' )
  9. plt.bar(profit.index, profit.values, label='profit' )
  10. # plt.grid(axis='x') #网格线
  11. plt.title("每个销售经理2019年的利润总额")
  12. plt.ylabel("利润额",size=12)
  13. plt.xlabel("姓名",size=12)
  14. plt.legend()

 堆叠柱状图——头部


  
  1. txtfile = r'orders.txt'
  2. df_txt = pd.read_csv(txtfile)
  3. profit = df_txt[df_txt['FY']==2019].groupby('OPERATOR')['PROFIT'].sum()
  4. price = df_txt[df_txt['FY']==2019].groupby('OPERATOR')['PRICE'].sum()
  5. plt.figure(figsize=(6,6),dpi=100)
  6. plt.bar(price.index, price.values, label='price' )
  7. plt.bar(profit.index, profit.values, label='profit', bottom=price.values ) # 在price头上画profit
  8. plt.grid(axis='x')
  9. plt.title("每个销售经理2019年的利润总额")
  10. plt.ylabel("利润额")
  11. plt.legend()

双维柱状图模板


  
  1. import numpy as np
  2. txtfile = r'orders.txt'
  3. df_txt = pd.read_csv(txtfile)
  4. profit = df_txt[df_txt['FY']==2019].groupby('OPERATOR')['PROFIT'].sum()
  5. price = df_txt[df_txt['FY']==2019].groupby('OPERATOR')['PRICE'].sum()
  6. plt.rcParams['font.sans-serif'] = 'KaiTi' # 设置全局字体为中文 楷体
  7. plt.rcParams['axes.unicode_minus'] = False # 不使用中文减号
  8. plt.figure(figsize=(10,6),dpi=120)
  9. # 如果要改变柱子在X轴的位置,需要设置Xticks的数值
  10. x = price.index
  11. x_ticks = np.arange(price.size)
  12. # 将两个柱子的X坐标错开,一个减去柱子宽度的一般,一个加上柱子宽度的一半
  13. width = 0.4
  14. plt.bar(x_ticks-(width/2), price.values, label='price', width=width )
  15. plt.bar(x_ticks+(width/2), profit.values, label='profit', width=width) # 在price头上画profit
  16. plt.xticks(x_ticks,x)
  17. plt.grid(axis='x')
  18. plt.title("每个销售经理2019年的利润总额")
  19. plt.ylabel("利润额")
  20. plt.legend()

 每文一语

当你拼尽全力却不知道什么是快乐,你该思考自己的人生了

文章来源: wxw-123.blog.csdn.net,作者:王小王-123,版权归原作者所有,如需转载,请联系作者。

原文链接:wxw-123.blog.csdn.net/article/details/123746754

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。