matplotlib(六种统计图)

目录

    • 散点图
      • 基本用法
      • 相关性
        • 不相关性
        • 正相关性
        • 负相关性
      • 外观调整
    • 折线图
      • 基本用法
      • 表示随时间变化时 plot_date()
      • 外观调整
    • 条形图
      • 基本用法(竖向条形图)
      • 外观调整
      • 横向条形图
        • plt.bar(orientation='horizontal')
        • plt.barh()
      • 复杂条形图
        • 叠加条形图
        • 并列条形图
    • 直方图
      • 基本用法
      • 二维直方图 plt.hist2d()
    • 饼状图
      • 基本用法
      • 其他属性
    • 箱形图
      • 基本用法
      • 多组数据对比

散点图

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

基本用法

基本语法:

plt.scatter(x,y)
import numpy as np
import matplotlib.pyplot as plt

height=[161,170,182,175,173,165]
weight=[50,58,80,70,69,55]

plt.scatter(height,weight)
# 显示数据图
plt.show()

matplotlib(六种统计图)_第1张图片matplotlib(六种统计图)_第2张图片

相关性

不相关性

N=1000
x=np.random.randn(N)
y1=np.random.randn(len(x))

plt.scatter(x,y1)

plt.show()

matplotlib(六种统计图)_第3张图片

正相关性

y2=x+np.random.randn(len(x))*0.1
plt.scatter(x,y2)
plt.show()

matplotlib(六种统计图)_第4张图片

负相关性

y3=-1*x+np.random.randn(len(x))*0.1
plt.scatter(x,y3)
plt.show()

matplotlib(六种统计图)_第5张图片

外观调整

  • 颜色:c
  • 点大小:s
  • 透明度:alpha
  • 点形状:marker
    marker styles

折线图

  • 折线图用直线段将各数据连接起来
  • 常用来观察数据随时间变化趋势

基本用法

语法:

plt.plot(x,y)
import numpy as np
import matplotlib.pyplot as plt
# 生成一组等区间数值
x=np.linspace(-10,10,100)
y=x**2
plt.plot(x,y)
plt.show()

PS:线段太密,所以看起来平滑
matplotlib(六种统计图)_第6张图片

表示随时间变化时 plot_date()

当x轴为日期时,应用plot_date()函数,注意:默认为散点图,要手动添加线型的参数
plot_date()用法

利用np.loadtxt()来导入数据
np.loadtxt()用法详解

外观调整

  • 线型:linestyle=’-’
  • 颜色:color=‘red’
  • 点的形状:marker=‘o’
# 例:
plt.plot_date(date, close, color='green', linestyle='dashed', marker='o')

条形图

  • 以长方形的长度为变量的统计图表
  • 用来比较多个项目分类的数据大小
  • 通常利用与较小的数据集分析

基本用法(竖向条形图)

基本语法:

plt.bar(x= , height= )

x:x轴数据
height:y轴方向柱的长度

import numpy as np
import matplotlib.pyplot as plt

N=5
y=[20,10,30,25,15]
index = np.arange(N)

p1 = plt.bar(x=index, height=y,width=0.5,bottom=100,color='red')

plt.show()

matplotlib(六种统计图)_第7张图片

外观调整

宽度:width,默认0.8
(width即为沿x轴方向的长度)
颜色:color,默认blue
柱的底部数据:bottom

横向条形图

plt.bar(orientation=‘horizontal’)

p2 = plt.bar(x=0, bottom=index, width=y,height=0.5,orientation='horizontal')

plt.show()

其中,x参数为x轴坐标的起始值;
bottom为条距x轴的距离。
matplotlib(六种统计图)_第8张图片

plt.barh()

使用barh()时,bottom改为left, 然后宽变高,高变宽。

p3=plt.barh(y=index,left=0,width=y,height=0.5)

plt.show()

y:y轴数据
matplotlib(六种统计图)_第9张图片

复杂条形图

叠加条形图

本质就是改变上层柱的bottom

index=np.arange(4)

sales_BJ=[52,55,63,53]
sales_SH=[44,66,55,41]

bar_width=0.3

plt.bar(index,sales_BJ,bar_width,color='b')
plt.bar(index,sales_SH,bar_width,color='r',bottom=sales_BJ)
plt.show()

matplotlib(六种统计图)_第10张图片

并列条形图

本质就是改变x的位置

index=np.arange(4)

sales_BJ=[52,55,63,53]
sales_SH=[44,66,55,41]

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()

matplotlib(六种统计图)_第11张图片

直方图

  • 由一系列高度不等的条形组成,表示数据的分布情况

基本用法

语法:

plt.hist(数据集, bins= ,normed= )

bins:箱子的个数
normed:是否标准化,若为是,则y轴数据为频率,而非个数

import numpy as np
import matplotlib.pyplot as plt


mu = 100  # mean of distribution
sigma = 20  # standard deviation of distribution
x = mu + sigma * np.random.randn(2000)

plt.hist(x, bins=10,color='red',normed=True)
plt.show()

matplotlib(六种统计图)_第12张图片

plt.hist(x, bins=50,color='green',normed=False)
plt.show()

matplotlib(六种统计图)_第13张图片

二维直方图 plt.hist2d()

x = np.random.randn(1000)+2
y = np.random.randn(1000)+3

plt.hist2d(x, y, bins=40)
plt.show()

matplotlib(六种统计图)_第14张图片

饼状图

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

基本用法

基本语法:

plt.pie(数据集, labels=)
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec

labels = 'A', 'B', 'C', 'D'
fracs = [15, 30, 45, 10]
# 表示某一块的分离程度
explode = (0, 0.05, 0, 0)
# 使饼状图为正圆形
plt.axes(aspect=1)

plt.pie(fracs, explode=explode, labels=labels, autopct='%.0f%%', shadow=True)

plt.show()

matplotlib(六种统计图)_第15张图片

其他属性

突出的部分:explode
标签数据:autopct 例:%0.1%% 保留一位小数
阴影:shadow

箱形图

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

基本用法

基本语法:

plt.boxplot(数据集)
import numpy as np
import matplotlib.pyplot as plt

data = np.random.normal(size=1000, loc=0.0, scale=1.0)

plt.boxplot(data,sym='o',whis=1.5)

plt.show()

matplotlib(六种统计图)_第16张图片
具体参数含义:
箱形图统计学知识
箱形图详解
关于正态分布随机数生成:
np.random.normal()用法

多组数据对比

data = np.random.normal(size=(100, 4), loc=0.0, scale=1.0)

labels = ['A','B','C','D']

plt.boxplot(data, labels=labels)

plt.show()

matplotlib(六种统计图)_第17张图片

你可能感兴趣的:(matplotlib(六种统计图))