数据可视化包Matplotlib

Matplotlib是Python中一个二维绘图包,能够非常简单的实现数据可视化。Matplotlib最早由John Hunter于2002年启动开发,其目的是为了构建一个Matlab式的绘图函数接口。在Anaconda发行版中已经集成了Matplotlib库,直接导入pyplot模块就可以使用了。导入方法为:import matplotlib.pyplot as plt

import matplotlib.pyplot as plt
plt.figure(1)               # 创建第一个画布
plt.subplot(2, 1, 1)         # 画布划分为2×1图形阵,选择第1张图片
<matplotlib.axes._subplots.AxesSubplot at 0x1884e0c2c50>

import numpy as np
plt.figure(1)  # 创建画布
x = np.linspace(0, 1, 1000)
plt.subplot(2, 1, 1)  # 分为2×1图形阵,选择第1张图片绘图
plt.title('y=x^2 & y=x')  # 添加标题
plt.xlabel('x')  # 添加x轴名称‘x’
plt.ylabel('y')  # 添加y轴名称‘y’
plt.xlim((0, 1))  # 指定x轴范围(0,1)
plt.ylim((0, 1))  # 指定y轴范围(0,1)
plt.xticks([0, 0.3, 0.6, 1])  # 设置x轴刻度
plt.yticks([0, 0.5, 1])  # 设置y轴刻度
plt.plot(x, x ** 2)
plt.plot(x, x)
plt.legend(['y=x^2', 'y=x'])  # 添加图例
plt.savefig('1.png')  # 保存图片
plt.show()

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.2)
y = np.sin(x)
plt.title('sin曲线')
plt.plot(x, y)
plt.savefig('2.png')
plt.show()

值得注意的是默认的pyplot字体并不支持中文字符的显示,因此需要通过修改font.sans-serif参数来修改绘图时的字体,使得图形可以正常显示中文。同时,由于修改字体后,会导致坐标轴中负号“-”无法正常显示,因此需要同时修改axes.unicode_minus参数。

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.2)
y = np.sin(x)
plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置字体为SimHei
plt.rcParams['axes.unicode_minus'] = False  # 解决负号“-”显示异常
plt.title('sin曲线')
plt.plot(x, y)
plt.savefig('2.png')
plt.show()

绘图过程中还有一个关键的问题就是坐标轴的字符刻度表示问题,比如绘制2018年-2019年某产品各个季度的销售额走势图,两年各季度的销售数据依次为:100、104、106、95、103、105、115、100(单位:万元)。一般的绘图代码如下:

import numpy as np
import matplotlib.pyplot as plt
x = np.array([1,2,3,4,5,6,7,8])                #季度标号
y = np.array([100,104,106,95,103,105,115,100]) #销售额
plt.rcParams['font.sans-serif'] = 'SimHei'     # 设置字体为SimHei
plt.title('某产品2018-2019各季度销售额')
plt.plot(x, y)
plt.xlabel('季度标号')
plt.ylabel('销售额(万元)')
plt.show()

横轴的意义没有突显出来,造成了图像的可读性比较差。实际上可以用xxx年xxx季度来表示,这样图像的可读性就更强。对横轴进行字符刻度标注可以通过xticks函数来实现。示例代码如下:

x = np.array([1,2,3,4,5,6,7,8])                #季度标号
y = np.array([100,104,106,95,103,105,115,100]) #销售额
v=['2018年一季度','2018年二季度','2018年三季度','2018年四季度','2019年一季度','2019年二季度','2019年三季度','2019年四季度']
plt.rcParams['font.sans-serif'] = 'SimHei'     # 设置字体为SimHei
plt.title('某产品2018-2019各季度销售额')
plt.plot(x, y)
plt.xlabel('季度')
plt.xticks(x, v, rotation = 45) #v为与x对应的字符刻度,rotation为旋转角度
plt.ylabel('销售额(万元)')
plt.show()

金融数据分析与挖掘实战4.1 Matplotlib(一)相关推荐

  1. 金融数据分析与挖掘实战 4.2 Matplotlib(二)

    Matplotlib常用图形绘制 Matplotlib绘制的常用图形包括散点图.线性图.柱状图.直方图.饼图.箱线图和子图. 1.散点图 散点图又称为散点分布图,是以利用坐标点(散点)的分布形态反映特 ...

  2. 金融数据分析余挖掘实战1.9-1.10补充

    # 1.9.2 有返回值的函数 def sumt(t): #求1一直加到t的和s = 0while t > 0:s = s + tt = t - 1return s s = sumt(30) # ...

  3. 金融数据分析与挖掘实战5.6-5.7

    # 5.6 支持向量机 #汽车评价数据,6个特征变量,1个分类标签,共1728条记录 #要求取1690条记录作为训练集,余下的作为测试集,计算预测准确率 import numpy as np impo ...

  4. 金融数据分析与挖掘实战练习2.10

    # 2.10矩阵及线性代数的运算 # 2.10.1 创建矩阵 import numpy as np mat1 = np.mat("1 2 3 ; 4 5 6 ; 7 8 9") p ...

  5. 金融数据分析与挖掘实战练习2.5-2.9

    # 2.5.1数组切片 #满足条件的切片 import numpy as np D = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16] ...

  6. 金融数据分析与挖掘实战练习2.1-2.4

    #逻辑运算符 3 and 4 4 3 and 5 and 8 # 如果用and连接多个正整数,那么将显示最后的那个 8 3 and 8 and 5 5 3 or 5 or 8 #如果用or连接多个正整 ...

  7. 金融数据分析与挖掘实战练习-1.9

    # if while 的综合运用 # 猜数字 #请猜我心中的那个数字(假如是10) s = input("请猜测我心中记住的那个数字是:") guess = int(s) if g ...

  8. 金融数据分析与挖掘实战1.7-1.8

    #1.7练习:如果成绩为60分以下,记为E,60-70 记为D,70-80 记为C ,80-90记为B, # 90-100记为A,某个同学成绩为75分,请设计一个if语句打印输出结果 #采用if语句进 ...

  9. 金融数据分析与挖掘实战1.5.2-1.5.3

    # 列表的元素排序 L1 = [1,3,2,6,8,4,3,9,7] L1.sort() print(L1) [1, 2, 3, 3, 4, 6, 7, 8, 9] L1[3] = 5 #把L1列表中 ...

最新文章

  1. FragmentManager的简单使用
  2. java数组长度怎么求,含答案解析
  3. cisco网络故障处理手册
  4. 第二章(jQuery选择器)
  5. P2801 教主的魔法
  6. Java进阶:CAS原理详解
  7. mysql 汉编码 的选_peewee连接mysql汉语言数据编码_mysql
  8. linux arch 包管理,Archlinux使用包管理方式安装MyEclipse
  9. 2017第二届中国信息通信大数据大会将于6月在京召开
  10. Tensorflow学习之 卷积神经网络 (一)什么是卷积?
  11. 金蝶kis商贸采购单商品代码_金蝶大包装小包装多单位计量单位换算关系用法,看了这个秒懂...
  12. 一个很好的String组合连接的方法(StringBuffer)
  13. Vim 多行剪切、复制和删除
  14. 专访黑石集团CEO苏世民:“我们能见他人所不能见”/巴伦独家
  15. android 飞行模式 配置 wifi可用,飞行模式下使用WiFi教程
  16. ABAP 去重 delete adjacent duplicates
  17. Lua_第28章 资源管理(下)
  18. 在WordPress中重新排序博客文章的4种简单方法(循序渐进)
  19. 数组下标访问越界导致溢出1
  20. 计算机的外围设备找不到,bluetooth外围设备驱动程序找不到怎么办?来看看详细的解决方案...

热门文章

  1. Java基础学习总结(75)——Java反射机制及应用场景
  2. Mysql学习总结(38)——21条MySql性能优化经验
  3. Microsoft Quantum Katas帮助开发人员探索使用Q#实现量子计算
  4. Spring系统学习:20180612--aop配置中表达式的写法
  5. python2.7安装sqlite3模块
  6. Opencv实现多幅图片拼接在一起
  7. TYVJ 1014 乘法游戏
  8. 介绍Ext JS 4.2的新特性的《深入浅出Ext JS》上市
  9. ORA-02291: 违反完整约束条件 …… - 未找到父项关键字
  10. @Html.ActionLink方法