Matplotlib基础学习一

 

Numpy简介

  1. 创建
  2. ndarray基本操作
  3. 常用函数

Matplotlib学习

  1. 折线图
  2. 条形图
  3. 直方图
  4. 饼状图
  5. 箱线图

 

 

 

Numpy简介

创建

一般有三种创建方式:

1.从python的基础数据对象转化

import numpy as np
a=[1,2,3,4]
x1=np.array(a)
x1
Out[5]: array([1, 2, 3, 4])
type(x1)
Out[6]: numpy.ndarray

2.通过Numpy内生成的函数生成

x=np.arange(11)
x
Out[10]: array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10])

3.从硬盘文件读取数据

#第三种方法读取数据
#日期,开盘价,最高价,最低价,收盘价,日期,交易金额
#读取文件
x=np.loadtxt('000001.csv',delimiter=',',skiprows=1,usecols=(1,4,6),unpack=False)#delimi代表以什么分割 skiprows跳过第一行(第一行没数据) usecols(用哪几列) unpack=Flase()
x
Out[15]: 
array([[3.25863000e+03, 3.35052000e+03, 5.31352384e+10],
       [3.33080000e+03, 3.35145000e+03, 5.01661696e+10],
       [3.32665000e+03, 3.37395000e+03, 3.91918880e+10],
       [3.37196000e+03, 3.29346000e+03, 3.71131168e+10],
       [3.27697000e+03, 3.28541000e+03, 4.10240864e+10],
       [3.25821000e+03, 3.22932000e+03, 3.22064672e+10],
       [3.22354000e+03, 3.23530000e+03, 2.30725760e+10],
       [3.24234000e+03, 3.22244000e+03, 2.40190752e+10],
       [3.22407000e+03, 3.33646000e+03, 2.82546240e+10],
       [3.34360000e+03, 3.37650000e+03, 3.39876768e+10],
       [3.18973000e+03, 3.11635000e+03, 4.01098784e+10],
       [3.11456000e+03, 3.17305000e+03, 3.57080800e+10],
       [3.18909000e+03, 3.32361000e+03, 4.10956032e+10],
       [3.32732000e+03, 3.34334000e+03, 3.53382976e+10],
       [3.35710000e+03, 3.35176000e+03, 3.66249248e+10],
       [3.34726000e+03, 3.38318000e+03, 3.17540992e+10],
...........................................................

ndarray基本操作

c=np.arange(11)
c
Out[23]: array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
c+c
Out[24]: array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18, 20])
cc*2


c*2
Out[26]: array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18, 20])
c[3]
Out[27]: 3
c[-1]
Out[28]: 10
c[0:5]
Out[29]: array([0, 1, 2, 3, 4])
c[:5]
Out[30]: array([0, 1, 2, 3, 4])
c[:]
Out[31]: array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
c[::2]
Out[32]: array([ 0,  2,  4,  6,  8, 10])
c[::3]
Out[33]: array([0, 3, 6, 9])
c[::-1]
Out[34]: array([10,  9,  8,  7,  6,  5,  4,  3,  2,  1,  0])

常用函数

cc=np.random.randint(1,100,10)
c
Out[37]: array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
cc
Out[38]: array([53, 98, 44, 41, 79, 29, 73, 16, 71, 58])
#生成10个数,都在1-100中取样。
np.min(c)
Out[40]: 0
np.min(cc)#求最小值
Out[41]: 16
np.max(cc)#求最大值
Out[42]: 98
np.mean(cc)#求均值
Out[43]: 56.2
#排序
x=np.random.randint(1,100,10)
x
Out[46]: array([68, 30, 57, 90, 89, 37, 93, 58, 47, 56])
y=np.sort(x)
y
Out[48]: array([30, 37, 47, 56, 57, 58, 68, 89, 90, 93])
#使用sort()排序方法 x本身是没受影响的
#使用np.sort()排序方法 y本身是没受影响的,
y=x.sort()
y
#用ndarray自带的方法排序 y没有值 x是变化的
x
Out[54]: array([30, 37, 47, 56, 57, 58, 68, 89, 90, 93])

Matplotlib学习

六种基本图形的画法 快速入门

散点图

import numpy as np

import matplotlib.pyplot as plt

height=[161,170,182,175,173,156]
weight=[50,70,82,75,73,56]

plt.scatter(height,weight)
plt.show()



import numpy as np

import matplotlib.pyplot as plt

# height=[161,170,182,175,173,156]
# weight=[50,70,82,75,73,56]
#
# plt.scatter(height,weight)
# plt.show()
N=1000
x=np.random.randn(N)
y=np.random.randn(N)

plt.scatter(x,y)
plt.show()

N=1000
x=np.random.randn(N)
y=x+np.random.randn(N)*0.5
#相关性

plt.scatter(x,y)
plt.show()

例子 股票

open,close=np.loadtxt('000001.csv',delimiter=',',skiprows=1,usecols=(1,4),unpack=True)
change=close-open#收盘价-开盘价
change.shape
Out[58]: (242,)
change
Out[59]: 
array([ 9.1890e+01,  2.0650e+01,  4.7300e+01, -7.8500e+01,  8.4400e+00,
       -2.8890e+01,  1.1760e+01, -1.9900e+01,  1.1239e+02,  3.2900e+01,
       -7.3380e+01,  5.8490e+01,  1.3452e+02,  1.6020e+01, -5.3400e+00,
        3.5920e+01, -3.6890e+01, -1.9980e+01,  3.3000e+00, -6.3390e+01,
       -1.9840e+01,  4.8820e+01, -3.8690e+01, -1.1468e+02, -4.4180e+01,
        3.1610e+01,  5.1100e+01,  1.1940e+01,  1.5460e+01,  1.7020e+01,
        1.6220e+01,  1.6030e+01, -2.7640e+01,  7.6210e+01,  1.3470e+01,
        3.5600e+00, -5.4650e+01,  1.5350e+01, -1.5610e+01, -6.8500e+00,
        7.8100e+01, -3.0200e+00,  1.3100e+00,  3.4510e+01,  1.3420e+01,
        5.8140e+01,  3.3250e+01,  6.6800e+01,  6.2500e+00,  3.0240e+01,
        4.7630e+01, -1.1600e+00, -2.0220e+01,  4.0160e+01,  4.9700e+00,

plt.scatter(yesterday,today,s=100,c='r' ,marker='<' ,alpha=0.5)#s代表面积#marker代表形状 c代表颜色 aplpha代表透明度
Out[70]: <matplotlib.collections.PathCollection at 0x165a20fbcc8>
plt.show()

折线图

折线图是用直线将各数据连接起来组成的图形

常用来观察数据随时间变化的趋势

例如股票价格、温度变化、等等

import numpy as np
import matplotlib.pyplot as plt

x=np.linspace(-10,10,5)
y=x**2

plt.plot(x,y)
plt.show()

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

plt.plot_date(date,open,'-')#改变线的形状

plt.show()

plt.plot_date(date,open,'-',color='red',marker='<')
plt.plot_date(date,close,'-',color='green',marker='<')

plt.show()

 

条形图

import numpy as np
import matplotlib.pyplot as plt


N=5
y=[20,10,30,25,15]

index=np.arange(N)
#left 改为x就不报错了
pl=plt.bar(x=index,height=y)

plt.show()

 

N=5
y=[20,10,30,25,15]

index=np.arange(N)

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

plt.show()

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

 

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




直方图

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

例如某年级同学身高分布情况

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)#随机函数生成大小为2000的数组

#hist函数 bins有几个直方 color默认是blue,normed对数组进行标准化
plt.hist(x, bins=10,color='red',normed=True)
plt.show()

 

x = np.random.randn(1000)+2
y = np.random.randn(1000)+3
#双变量直方图
plt.hist2d(x, y, bins=40)
plt.show()



 

饼状图

# Some data
#标签
labels = 'A', 'B', 'C', 'D'
#数据
fracs = [15, 30, 45, 10]
#aspect 1比1
plt.axes(aspect=1)

plt.pie(x=fracs,labels=labels,autopct='%.0f%%')


 

# Some data
#标签
labels = 'A', 'B', 'C', 'D'
#数据
fracs = [15, 30, 45, 10]
#aspect 1比1 shadow 阴影 explode距离圆心
plt.axes(aspect=1)
explode = (0, 0.05, 0, 0)
plt.pie(x=fracs,labels=labels,autopct='%.0f%%',explode=explode,shadow=True)

箱线图

箱型图又称为盒须图,是一种用作显示一组数据分散情况资料的统计图。

上边缘,上四分位数,中位数,下四分位数,下边缘,异常值。

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(100)

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

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

plt.show()


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

#可以在同一张图内画几个数据
#4*1000数组 4个数组 每个数组有1000个数据
# 参数loc(float):正态分布的均值,对应着这个分布的中心。loc=0说明这一个以Y轴为对称轴的正态分布,
# 参数scale(float):正态分布的标准差,对应分布的宽度,scale越大,正态分布的曲线越矮胖,scale越小,曲线越高瘦。
# 参数size(int 或者整数元组):输出的值赋在shape里,默认为None。
data = np.random.normal(size=(1000, 4), loc=0.0, scale=1.0)

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

plt.boxplot(data, labels=labels)

plt.show()

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值