文章目录

  • matplotlib-6种图形的基本画法
    • 1.numpy补充
    • 2.散点图
    • 3.折线图
    • 4.条形图
    • 5.直方图
      • 1D直方图
      • 2-D直方图(双变量直方分布图)
    • 6.饼状图
    • 7.箱形图

matplotlib-6种图形的基本画法

1.numpy补充

# 使用numpy生成100以内的随机数组;
#将数组存储到文件,在从该文件中读取数组;
#对数组进行排序求最大值、最小值、均值、方差
import numpy as np
x = np.random.randint(0,100,10)
# 将数组存储到文件
np.savetxt('testfile.txt',x)
# 从该文件中读取数组
c = np.loadtxt('testfile.txt')# np.func(x) 生成一个新的数组
c_sort = np.sort(c)
high = np.max(c)
low = np.min(c)
average = np.mean(c)
variance = np.var(c)
# unpack 的作用是可以变出多个表
open,close,volume=np.loadtxt('000001.csv',delimiter=',',unpack=True)

2.散点图

散点图显示两组数据的值,每个点的坐标位置由变量的值决定
由一组不连接的点完成,用于观察两种变量的相关性

# 简单例子:身高与体重
import numpy as np
import matplotlib.pyplot as pltheight = [161,170,183,175,173,165]
weight = [50,58,80,70,69,55]
plt.scatter(height,weight)
plt.show()

# 不相关性
import numpy as np
import matplotlib.pyplot as pltN = 1000
x1 = np.random.randn(N)
y1 = np.random.randn(N)plt.scatter(x1,y1)
plt.show()

# 正相关性
import numpy as np
import matplotlib.pyplot as pltN = 1000
x1 = np.random.randn(N)
y1 = x1 + np.random.randn(N)*0.5plt.scatter(x1,y1)
plt.show()

# 负相关性
import numpy as np
import matplotlib.pyplot as pltN = 1000
x1 = np.random.randn(N)
y1 = -x1 + np.random.randn(N)*0.5plt.scatter(x1,y1)
plt.show()

# 实例:股票价格涨幅
import numpy as np
import matplotlib.pyplot as pltopen,close = np.loadtxt('000001.csv',delimiter=',',skiprows=1,usecols = (1,4),unpack=True)change = close - open
today = change[:-1]
yesterday = change[1:]
plt.scatter(today,yesterday)
plt.show()

# 散点图的外观调整
# 颜色c,点大小s,透明度alpha,点形状marker
# 透明度可以看出点的密集程度
# 实例:股票价格涨幅
import numpy as np
import matplotlib.pyplot as pltopen,close = np.loadtxt('000001.csv',delimiter=',',skiprows=1,usecols = (1,4),unpack=True)change = close - open
today = change[:-1]
yesterday = change[1:]
plt.scatter(today,yesterday,c='r',s=50,marker='>',alpha=0.5)
plt.show()

3.折线图

折线图是用直线段将各数据连接起来组成的图形
常用来观察数据随时间变化的规律

import numpy as np
import matplotlib.pyplot as plt# linspacce在(-10,10)内等距取10个数
x = np.linspace(-10,10,10)
y = x**2
plt.plot(x,y)
plt.show()

# 股票时间序列图
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
# 日期格式的转化
date,open,close = np.loadtxt('000001.csv',delimiter=',',converters={0:mdates.bytespdate2num('%m/%d/%Y')},skiprows=1,usecols=(0,1,4),unpack=True)
plt.plot(date,open)
plt.show()

x轴为浮点数

x轴为时间

# 股票时间序列图
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
# 日期格式的转化
date,open,close = np.loadtxt('000001.csv',delimiter=',',converters={0:mdates.bytespdate2num('%m/%d/%Y')},skiprows=1,usecols=(0,1,4),unpack=True)
# plot_date专门绘制有一个坐标轴为时间的图形
plt.plot_date(date,open,'-')
plt.show()

# 散点图的外观调整-参数
# 线型linestyle  颜色color  点形状 marker
# 股票时间序列图
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
# 日期格式的转化
date,open,close = np.loadtxt('000001.csv',delimiter=',',converters={0:mdates.bytespdate2num('%m/%d/%Y')},skiprows=1,usecols=(0,1,4),unpack=True)
# plot_date专门绘制有一个坐标轴为时间的图形
plt.plot_date(date,open,linestyle = '-',color = 'red',marker = 'o')
plt.show()

# 散点图的外观调整-参数
# 线型linestyle  颜色color  点形状 marker
# 股票时间序列图
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
# 日期格式的转化
date,open,close = np.loadtxt('000001.csv',delimiter=',',converters={0:mdates.bytespdate2num('%m/%d/%Y')},skiprows=1,usecols=(0,1,4),unpack=True)
# plot_date专门绘制有一个坐标轴为时间的图形
plt.plot_date(date,open,linestyle = '--',color = 'green',marker = '>')
plt.show()

# 在一个图形上画两条折线图
# 股票时间序列图
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
# 日期格式的转化
date,open,close = np.loadtxt('000001.csv',delimiter=',',converters={0:mdates.bytespdate2num('%m/%d/%Y')},skiprows=1,usecols=(0,1,4),unpack=True)
# plot_date专门绘制有一个坐标轴为时间的图形
plt.plot_date(date,open,linestyle = '--',color = 'green',marker = '>')
plt.plot_date(date,close,linestyle = '-',color = 'red' ,marker = 'o')
plt.show()

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdatesdate,open,high,low,close=np.loadtxt('000001.csv',delimiter=',',converters={0:mdates.bytespdate2num('%m/%d/%Y')},skiprows=1,usecols=(0,1,2,3,4),unpack=True)# 画四个折线图
plt.plot_date(date,open,'y-')
plt.plot_date(date,high,'g-')
plt.plot_date(date,low,'b-')
plt.plot_date(date,close,'r-')plt.show()

4.条形图

  • 以长方形的长度为变量的统计表
  • 用来比较多个项目分类的数据大小
  • 通常用于较小的数据集分析
# 条形图
import numpy as np
import matplotlib.pyplot as pltN = 5
y = [20,10,30,25,15]
index = np.arange(N)
# 参数:color-颜色  width-宽度
p1 = plt.bar(index,height=y,color='red',width=0.5)
plt.show()

# 水平条形图
# 参数orientation-条形图的方向:orientation='horizontal';参数bottom-纵坐标
import numpy as np
import matplotlib.pyplot as pltN = 5
y = [20,10,30,25,15]
index = np.arange(N)
# 参数:color-颜色  width-宽度
p1 = plt.bar(0,bottom=index,width=y,color='red',height=0.5,orientation='horizontal')
plt.show()

# 水平条形图
import numpy as np
import matplotlib.pyplot as pltN = 5
y = [20,10,30,25,15]
index = np.arange(N)
# 使用barh()内置函数
p1 = plt.barh(index,width=y,height=0.8)
plt.show()

import numpy as np
import matplotlib.pyplot as pltsales_BJ=[52,55,63,53]
sales_SH=[44,66,55,41]index=np.arange(4)
bar_width=0.3
# 并列条形图
plt.bar(index,sales_BJ,bar_width,color='b')
plt.bar(index+bar_width,sales_SH,bar_width,color='r')
plt.show()
# 层叠图:bottom=sales_BJ
plt.bar(index,sales_BJ,bar_width,color='b')
plt.bar(index,sales_SH,bar_width,color='r',bottom=sales_BJ)
plt.show()



与竖直的区别:水平层叠条形图,参数bottom要改为left

# 生成2组大小为5的数据
# 画出两组数据水平的条形图
# 采用并列和层叠两种方式
import numpy as np
import matplotlib.pyplot as pltindex=np.arange(5)
sales_BJ=[52,55,63,53,40]
sales_SH=[44,66,55,41,30]
bar_width=0.3
# 水平并列条形图
plt.barh(index,width=sales_BJ,height=bar_width,color='b')
plt.barh(index+bar_width,width=sales_SH,height=bar_width,color='r')
plt.show()
# 水平层叠条形图,参数bottom要改为left
plt.barh(index,width=sales_BJ,height=bar_width,color='b')
plt.barh(index,width=sales_SH,height=bar_width,color='r',left=sales_BJ)
plt.show()


5.直方图

1D直方图

有一系列高度不等的纵向条形组成,表示数据分布的情况;一般用来显示连续型的数值性数据

import numpy as np
import matplotlib.pyplot as pltmu = 100  # mean of distribution
sigma = 20  # standard deviation of distribution
x = mu + sigma * np.random.randn(2000)
# bins表示直方的个数,normed=True表示对其数据进行标准化
plt.hist(x, bins=10,color='red',normed=True)
plt.show()

import numpy as np
import matplotlib.pyplot as pltmu = 100  # mean of distribution
sigma = 20  # standard deviation of distribution
x = mu + sigma * np.random.randn(2000)
# bins表示直方的个数,normed表示是否对其数据进行标准化
# 如果标准化,纵坐标是频率;如果不标准化,纵坐标是数量
plt.hist(x, bins=50,color='green',normed=False)
plt.show()


数据数量很大时,接近总体密度曲线

2-D直方图(双变量直方分布图)

# 双变量直方分布图
import numpy as np
import matplotlib.pyplot as pltx = np.random.randn(1000)+2
y = np.random.randn(1000)+3plt.hist2d(x, y, bins=100)
plt.show()

**

`# 随机生成2000个数据,均值为10 ,方差为3
# 绘制两个直方图,bins分别为10,50;normed分别为True和False
import numpy as np
import matplotlib.pyplot as pltmu = 10  # mean of distribution
sigma = 3  # standard deviation of distribution
x = mu + sigma * np.random.randn(2000)plt.hist(x, bins=10,normed=True)plt.hist(x, bins=50,normed=False)
plt.show()`**
# 随机生成x和y,分别为2000个,x均值为1,y均值为5
# 绘制2D直方图,bins为40个
import numpy as np
import matplotlib.pyplot as pltx=np.random.randn(2000)+1
y=np.random.randn(2000)+5plt.hist2d(x,y,bins=40)plt.show()

6.饼状图

饼状图显示一个数据系列中各项的大小与各项总和的比例
饼状图的数据显示为整个饼状图的百分比

# 饼状图
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpeclabels = 'A', 'B', 'C', 'D'
fracs = [15, 30, 45, 10]
explode = (0, 0.05, 0, 0)# 设置x轴、y轴比例为1:1,从椭圆变成圆形
plt.axes(aspect=1)# 参数autopct表示将其所占比例用python格式化字符串表示出来
# 参数explode表示离圆中心的距离,用来突出的显示某一块或某几块
# 参数shadow=True表示是否有阴影
plt.pie(fracs, explode=explode, labels=labels, autopct='%.0f%%', shadow=True)
plt.show()

# 绘制饼状图,突出显示SZ,百分比精确到小数点后一位,有阴影
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpeclabels = 'SH', 'BJ', 'SZ', 'GD'
fracs = [20, 10, 30, 25]
explode = (0, 0, 0.05, 0)plt.axes(aspect=1)plt.pie(fracs, explode=explode, labels=labels, autopct='%.1f%%', shadow=True)plt.show()

7.箱形图

箱形图是一种用作显示一组数据分散情况资料的统计图
上边缘、上四分位数、中位数、下四分位数、下边缘、异常值

# 箱形图
import numpy as np
import matplotlib.pyplot as plt# 生成随机数
np.random.seed(100)
# 生成大小为1000的数组
data = np.random.normal(size=1000, loc=0.0, scale=1.0)# 参数sym用来调整异常值的点的形状
# whis用来表示图的虚线长度的比例值
plt.boxplot(data,sym='o',whis=1.5)plt.show()

# 箱形图
import numpy as np
import matplotlib.pyplot as pltnp.random.seed(100)
# 多个箱形图
data = np.random.normal(size=(100, 4), loc=0.0, scale=1.0)
labels = ['A','B','C','D']plt.boxplot(data, labels=labels,sym='>',whis=1.5)plt.show()

数据科学包14-matplotlib-6种图形的基本画法相关推荐

  1. 机器学习---数据科学包-第2天

    1 pandas快速入门(一) .Series()方法.Series类型由一组数据及与之相关的数据索引组成. import pandas as pd import numpy as np s = pd ...

  2. 3.机器学习—数据科学包3.2pandas基础

    pandas基础 一.pandas介绍 1.什么是pandas 2.pandas用途 3.课程内容 二.Ipython开发环境搭建 1.安装 2.新建运行环境 3.Ipython技巧 4.Ipytho ...

  3. 机器学习-数据科学库:matplotlib绘图

    机器学习-数据科学库:matplotlib绘图 matplotlib绘图 matplotlib折线图 matplotlib散点图 matplotlib条形图 matplotlib直方图 对比常用统计图 ...

  4. HuaPu在学:机器学习——数据科学库【matplotlib】

    数据科学库[matplotlib] 文章目录 数据科学库[matplotlib] 前言 一.数据分析介绍及环境安装 1.为什么要数据分析??? 2.环境安装 二.matplotlib 1.为什么学习m ...

  5. python第二阶段(2)入门-数据科学包 pandas

    数据科学包 pandas 导入pandas 创建对象 1 系列 2 日期序列(1) 3 日期序列(2) 4 Series的操作(1) 5 Series的操作(2) 合并,新增,连接和比较 1 连接 2 ...

  6. python 数据科学 包_什么时候应该使用哪个Python数据科学软件包?

    python 数据科学 包 Python is the most popular language for data science. Unfortunately, it can be tricky ...

  7. 数据科学包——Day2

    数据科学包--Day2 利用Pandas, Numpy进行电影数据分析 准备工作 任务: 数据读取 数据合并 按性别查看各个电影的平均评分 男女评分差异最大的电影 活跃电影排行 前十大活跃电影--被评 ...

  8. 数据科学中常见的9种距离度量方法(包括曼哈顿距离、欧氏距离、半正矢距离等)

    数据科学中常见的9种距离度量方法(包括曼哈顿距离.欧氏距离.半正矢距离等) 1.欧氏距离(Euclidean Distance) 2.余弦相似度(Cosine Similarity) 3.汉明距离(H ...

  9. 看看这些鲜为人知的宝藏Python数据科学包吧!

    动态数据科学的这三剑客几乎无人不知无人不晓:Numpy,Pandas和Matplotlib.你可能已经熟悉这些包以及它们的运作方式. 还有其他很炫酷的包,你肯定也想试一试,例如Plotly,Seabo ...

  10. Python数据科学库02(matplotlib)

    Python数据科学库02 学习02 matplotlib 对比常用统计图 折线图的更多应用场景: 1.呈现公司产品(不同区域)每天活跃用户数 2.呈现app每天下载数量 3.呈现产品新功能上线后,用 ...

最新文章

  1. aws-ec2-双网卡问题
  2. style=background-image: url(__HOMEPAGE__/views/IMJ2V2/images/banner2.jpg)
  3. 深度学习-Tensorflow2.2-Tensorboard可视化{5}-可视化基础-17
  4. ecshop 快速添加会员
  5. 为什么睡觉时身体突然抖一下?答案吓到我了!
  6. CF605E-Intergalaxy Trips【期望dp】
  7. C语言1013山东理工大学试题,山东理工大学史上最全C语言PPTC程序设计(2基本数据与运算).ppt...
  8. Bailian2935 有未知数的表达式【递归】
  9. 等差乘等比数列求和公式
  10. java 通过身份证计算年龄性别
  11. Python找出数组中重复数字
  12. 竖亥——京东以神为名出击,神一样的物流黑科技
  13. VirtualBox安装Ubuntu系统过程及问题排查
  14. 令人生畏的源码,到底该怎样看?
  15. 【通州爆料】通州台湖一村被征地建设轻轨L2线
  16. 2018任天堂服务器维护,任天堂更改Switch网络收费政策,并延迟至2018年
  17. 定位多线程内存越界问题实践总结
  18. HNUST 1231:猜牌术(水....)
  19. python正则表达式试题,003:Python正则表达式讲解及习题练习
  20. python 数字转化excel行列_Python 3 实现数字转换成Excel列名(10进制到26进制的转换函数)...

热门文章

  1. C++自定义函数类型——typedef的使用
  2. vue-cli 发布部署IIS
  3. pygame学习_part1_pygame写程序前的准备工作
  4. oracle 常用索引分析,使用原则和注意事项
  5. mysqljoin的原理和优化
  6. The prefix mvc for element mvc:annotation-driven is not bound 的解决方法
  7. IIS 10 安装URLRewrite组件 方式
  8. (LINQ 学习系列)(3)学习Linq的几个基础知识
  9. 普通摄像头游戏——飞翔
  10. 38.django的路由系统