1、x 表示数量,y 表示名字

 1 import matplotlib.pyplot as plt
 2
 3
 4 dic = {'a': 22, 'b': 10, 'c': 6, 'd': 4, 'e': 2, 'f': 10, 'g': 24, 'h': 16, 'i': 1, 'j': 12}
 5 s = sorted(dic.items(), key=lambda x: x[1], reverse=False)  # 对dict 按照value排序 True表示翻转 ,转为了列表形式
 6 print(s)
 7 x_x = []
 8 y_y = []
 9 for i in s:
10     x_x.append(i[0])
11     y_y.append(i[1])
12
13 x = x_x
14 y = y_y
15
16 fig, ax = plt.subplots()
17 ax.barh(x, y, color="deepskyblue")
18 labels = ax.get_xticklabels()
19 plt.setp(labels, rotation=0, horizontalalignment='right')
20
21 for a, b in zip(x, y):
22     plt.text(b+1, a, b, ha='center', va='center')
23 ax.legend(["label"],loc="lower right")
24
25 plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
26 plt.ylabel('name')
27 plt.xlabel('数量')
28 plt.rcParams['savefig.dpi'] = 300  # 图片像素
29 plt.rcParams['figure.dpi'] = 300  # 分辨率
30 plt.rcParams['figure.figsize'] = (15.0, 8.0)  # 尺寸
31 plt.title("title")
32
33 plt.savefig('D:\\result.png')
34 plt.show()

2、x 表示名字,y 表示数量,多重组合

import matplotlib.pyplot as plt
import numpy as npx = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
y1 = [6, 5, 8, 5, 6, 6, 8, 9, 8, 10]
y2 = [5, 3, 6, 4, 3, 4, 7, 4, 4, 6]
y3 = [4, 1, 2, 1, 2, 1, 6, 2, 3, 2]plt.bar(x, y1, label="label1", color='red')
plt.bar(x, y2, label="label2",color='orange')
plt.bar(x, y3, label="label3", color='lightgreen')plt.xticks(np.arange(len(x)), x, rotation=0, fontsize=10)  # 数量多可以采用270度,数量少可以采用340度,得到更好的视图
plt.legend(loc="upper left")  # 防止label和图像重合显示不出来
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.ylabel('数量')
plt.xlabel('name')
plt.rcParams['savefig.dpi'] = 300  # 图片像素
plt.rcParams['figure.dpi'] = 300  # 分辨率
plt.rcParams['figure.figsize'] = (15.0, 8.0)  # 尺寸
plt.title("title")
plt.savefig('D:\\result.png')
plt.show()

3、x为线路,y 为值,多重组合

import matplotlib.pyplot as plt
import numpy as npsize = 10
y1 = [6, 5, 8, 5, 6, 6, 8, 9, 8, 10]
y2 = [5, 3, 6, 4, 3, 4, 7, 4, 4, 6]
y3 = [4, 1, 2, 1, 2, 1, 6, 2, 3, 2]x = np.arange(size)
total_width, n = 0.8, 3     # 有多少个类型,只需更改n即可
width = total_width / n
x = x - (total_width - width) / 2plt.bar(x, y1,  width=width, label='label1',color='red')
plt.bar(x + width, y2, width=width, label='label2',color='deepskyblue')
plt.bar(x + 2 * width, y3, width=width, label='label3', color='green')plt.xticks()
plt.legend(loc="upper left")  # 防止label和图像重合显示不出来
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.ylabel('value')
plt.xlabel('line')
plt.rcParams['savefig.dpi'] = 300  # 图片像素
plt.rcParams['figure.dpi'] = 300  # 分辨率
plt.rcParams['figure.figsize'] = (15.0, 8.0)  # 尺寸
plt.title("title")
plt.savefig('D:\\result.png')
plt.show()

4、多个柱状图显示值,X轴显示x本应有的值

使用标签  tick_label

import matplotlib.pyplot as plt
import numpy as npname = ["name1","name2","name3","name4","name5","name6","name7","name8","name9","name10"]
y1 = [6, 5, 8, 5, 6, 6, 8, 9, 8, 10]
y2 = [5, 3, 6, 4, 3, 4, 7, 4, 4, 6]
y3 = [4, 1, 2, 1, 2, 1, 6, 2, 3, 2]x = np.arange(len(name))
width = 0.25plt.bar(x, y1,  width=width, label='label1',color='darkorange')
plt.bar(x + width, y2, width=width, label='label2', color='deepskyblue', tick_label=name)
plt.bar(x + 2 * width, y3, width=width, label='label3', color='green')# 显示在图形上的值
for a, b in zip(x,y1):plt.text(a, b+0.1, b, ha='center', va='bottom')
for a,b in zip(x,y2):plt.text(a+width, b+0.1, b, ha='center', va='bottom')
for a,b in zip(x, y3):plt.text(a+2*width, b+0.1, b, ha='center', va='bottom')plt.xticks()
plt.legend(loc="upper left")  # 防止label和图像重合显示不出来
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.ylabel('value')
plt.xlabel('line')
plt.rcParams['savefig.dpi'] = 300  # 图片像素
plt.rcParams['figure.dpi'] = 300  # 分辨率
plt.rcParams['figure.figsize'] = (15.0, 8.0)  # 尺寸
plt.title("title")
plt.savefig('D:\\result.png')
plt.show()

5、对不同区段的值使用不同的颜色

import matplotlib.pyplot as pltx=[1,2,3,4,5,6,7,8,9,10,11,12]
y=[6,3,9,2,6,16,8,10,4,14,18,6]def get_color(x, y):"""对销量不同的区段标为不同的颜色"""color = []for i in range(len(x)):if y[i] < 5:color.append("green")elif y[i] < 10:color.append("lightseagreen")elif y[i] < 15:color.append("gold")else:color.append("coral")return colorplt.bar(x,y,label="销量",color=get_color(x,y), tick_label=x)for a,b in zip(x, y):plt.text(a, b+0.1, b, ha='center', va='bottom')plt.legend(loc="upper left")
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.ylabel('销量')
plt.xlabel('date')
plt.rcParams['savefig.dpi'] = 300  # 图片像素
plt.rcParams['figure.dpi'] = 300  # 分辨率
plt.rcParams['figure.figsize'] = (15.0, 8.0)  # 尺寸
plt.title("月份销量的分布情况")
plt.savefig('D:\\result.png')
plt.show()

转载于:https://www.cnblogs.com/BackingStar/p/10986955.html

matplotlib 的几种柱状图相关推荐

  1. matplotlib柱状图上方显示数据_使用 matplotlib 的两种姿势

    点击上"蓝字"关注我们 本文环境说明熊猫本次用的是 Anaconda 的 jupyter notebook 编写的本文代码.今天用到的库都是已经集成好的,无须另行安装.每个库的版本 ...

  2. 【Python】Matplotlib分层绘制投影柱状图

    问题描述 我们在2D平面上可以绘制柱状图,如果要绘制多组数据的柱状图,则可以尝试使用堆叠柱状图或者并列柱状图. 但是,如果数据量过多,那么使用这两种柱状图展示数据的可视化效果就不是很理想. 这时候,我 ...

  3. Matplotlib 2 |折线图| 柱状图| 堆叠图| 面积图| 填图| 饼图| 直方图| 散点图| 极坐标| 图箱型图

    目录 Matplotlib 2 |折线图| 柱状图| 堆叠图| 面积图| 填图| 饼图| 直方图| 散点图| 极坐标| 图箱型图 1.基本图表绘制 plt.plot() ts.plot() 由Seri ...

  4. python使用matplotlib可视化堆叠的柱状图(stacked bar plot)、多个类别的数据在分类变量层面累积堆叠起来

    python使用matplotlib可视化堆叠的柱状图(stacked bar plot).多个类别的数据在分类变量层面累积堆叠起来 目录

  5. Python使用matplotlib绘制分组对比柱状图(bar plot)可视化时汉语(中文)标签显示成了框框□□、什么情况、我们有解决方案

    Python使用matplotlib绘制分组对比柱状图可视化时(bar plot)汉语(中文)标签显示成了框框□□.什么情况.我们有解决方案 目录

  6. python如何安装matplotlib_详解python安装matplotlib库三种失败情况

    (可能只有最后一句命令有用,可能全篇都没用) (小白方法,可能只适用于本人情况) 安装matplotlib时,出现的三种失败情况 1.read timed out 一开始我在pycharm终端使用pi ...

  7. python画柱状图-python 使用 matplotlib.pyplot来画柱状图和饼图

    导入包 import matplotlib.pyplot as plt 柱状图 最简柱状图 # 显示高度 def autolabel(rects): for rect in rects: height ...

  8. python中matplotlib库饼图_python 使用 matplotlib.pyplot来画柱状图和饼图

    导入包 import matplotlib.pyplot as plt 柱状图 最简柱状图 # 显示高度 def autolabel(rects): for rect in rects: height ...

  9. 【python学习】-matplotlib绘制双坐标柱状图

    matplotlib绘制双坐标柱状图 单坐标柱状图绘制 双坐标柱状图绘制 图形美化 本文章记录双坐标柱状图的绘制过程 单坐标柱状图绘制 #来自官网的例子 import matplotlib.pyplo ...

最新文章

  1. linux命令速查手册_值得收藏!Linux系统常用命令速查手册
  2. Ubuntu Linux配置Nginx+MySQL+PHP+phpMyAdmin详细步骤
  3. linux 输出重定向
  4. python建立列表_python创建列表和向列表添加元素的实现方法
  5. labelimg如何调整框的颜色_PS学习之旅:如何更好调整画面明暗?明度、色阶详细介绍,收藏...
  6. spring之Bean的生命周期
  7. c语言高级程序设计第五版PDF,C语言高级编程.pdf
  8. 学习用MaxScipt批处理Max文件
  9. 《2017微信春节数据报告》出炉 初一到初五微信红包收发总量达到460亿个
  10. SpringBoot2.4.2+Vue集成Activiti6流程引擎
  11. Linux系统磁盘分区格式MBR格式转换GPT
  12. javax.validation校验整理
  13. 平安智盈人寿保险计算
  14. Nao机器人如何实现视频监控
  15. GIT - 安装、设置和帮助
  16. vue引入51la流量监控
  17. PHP empty() 的判断
  18. 凤凰大视野----冷暖人生: 记录平凡人的普通人生
  19. 搭建Android开发环境Win7-64位
  20. 一位创业者创业失败后,成功的做了一个创业孵化器!

热门文章

  1. SharePoint 2010 内容编辑器Web部件的使用方法
  2. 一款不错的基于WEB技术的文件服务器
  3. 8086/8088 存储器分段概念
  4. 跳转到保护模式并显示一个LOGO
  5. 构建、测试和部署驱动程序
  6. ACM模板--邻接矩阵 有向图 搜索算法
  7. 后台开发经典书籍--构建高性能WEB站点
  8. IAR在线调试时用DEBUG打印调试信息
  9. org.apache.ibatis.binding.BindingException原因总结
  10. EasyMock基本使用