Matplotlib数据可视化

e# 安装及使用

安装pip install -i https://mirrors.aliyun.com/pypi/simple/ matplotlib
使用import Matplotlib.pyplot as plt
操作需要numpy数据对象需一并引入import numpy as np

散点图

生成需要的数据

# 从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high.
numpy.random.uniform(low,high,size)
# 生成100行2列的从0.0到0.5的随机数
array1 = np.random.uniform(0.0, 5.0, size=(100, 2))
array1
# 生成100行2列的从4.2到10的随机数
array2 = np.random.uniform(4.2, 10, size=(100, 2))
array2

保存需要的数据

保存名matplot_test_detal.txt
fmt存储方式浮点 浮点

保存名:matplot_test_detal.txt
fmt存储方式: 浮点(空格)浮点
每行分割符: \n

np.savetxt('./matplot_test_detal1.txt',array1,fmt='%f %f', delimiter = '\n')
np.savetxt('./matplot_test_detal2.txt',array2,fmt='%f %f', delimiter = '\n')

读取需要的数据

a = np.loadtxt('./matplot_test_detal1.txt')
b = np.loadtxt('./matplot_test_detal2.txt')

绘散点图

plt.scatter(x,y)
x>[:]取所有的元素
x>0 第一列

plt.scatter(a[:,0],a[:,1])
plt.scatter(b[:,0],b[:,1])

散点图属性

# 打印形状
a.shape
# 设置样式
x = [1,2,3,4]
y = [2,3,4,8]
plt.scatter(x,y,s=[20,40,80,300], color=['r','g','b','y'], marker = '^')

练习

# 生成20个男人身高
male_high = np.random.uniform(110 185,size=20)
male_high
# 生成20个男人身份id 删除0位
male_id = np.arange(21)
male_id = np.delete(male_id,0)
# 从行数据变成列数据后合并
male_high = male_high.reshape(20,1)
male_id = male_id.reshape(20,1)
male = np.concatenate((male_id,male_high), axis = 1)
# 女士同理
female_high = np.random.uniform(140, 185,size=20)
female_id = np.arange(21)
female_id = np.delete(female_id,0)
female_high = female_high.reshape(20,1)
female_id = female_id.reshape(20,1)
female = np.concatenate((female_id,female_high), axis = 1)
female

# 男女合并
X = np.concatenate((male, female),axis = 0)
# 性别 1男 0女
y = np.concatenate([np.ones(20), np.zeros(20)])
# 求男性身高
X[y==1]

# 绘制
plt.scatter(X[y==1,0],X[y==1,1],color='r')
plt.scatter(X[y==0,0],X[y==0,1],color='g')

绘制折线图

普通折线图

x = np.arange(10)
x
np.random.seed(1)
y = np.random.random(size = 10)
y
plt.plot(x,y,color='y', linestyle='--',marker='h')

sinx

# 生成100个x轴坐标
x = np.linspace(0,10,100)
y = np.sin(x)
plt.plot(x,y)

cosx

y2 = np.cos(x)
y2
plt.plot(x,y2)

# 同时执行在同一张图上
plt.plot(x,y, label='sin(x)')
plt.plot(x,y2, label='cos(x)')
# 设置提示
plt.legend()
# 设置坐标轴
plt.axis([-5,15,-2,2])
plt.show()

绘制柱状图和饼图

# X轴季度
x = ['Q1','Q2','Q3','Q3']
# Y轴收入
y = [10,30,20,60]
# 绘制柱状图 颜色为green 宽度为0.3
rect = plt.bar(x,y,color='g',width = 0.3)
# 加上网格
plt.grid(True)
# 在某个坐标上显示文本
plt.text(0.2,50,'test')

绘制标度值

rect = plt.bar(x,y,color='g',width = 0.3)
plt.grid(True)

for index, item in enumerate(rect):
	_x = item.get_x() + 0.1
	_y = item.get_height() + 1
	plt.text(_x, _y,y[index])
# 延长y轴
plt.ylim(0, 70)

绘制饼图

plt.axes(aspect = 1)
# 精确到后两位,输出百分号 切出0.2 赋予阴影
plt.pie(y,labels = x,autopct = '%2.f%%',explode=[0.2,0,0,0],shadow=True)

绘制直方图

np.random.seed(100)
data = np.random.normal(9000, 3000,size = 300 )
data = data[data>=5000]
len(data)
plt.hist(data)
plt.show()

优化

# rwidth距离 alpha透明度 设置柱子个数 bins
plt.hist(data, color='g', rwidth=0.6, alpha=0.6 ,bins=20)
plt.show()

绘制箱线图

data = np.arange(1,10)
data
plt.boxplot(data)
plt.show()
np.random.seed(100)
data = np.random.normal(size = 100)
data
plt.hist(data)
plt.show()
data = np.concatenate([data,[4,7,8,9,-4]])
plt.boxplot(data)
plt.show()
# whis属性指定上下边界四分位距离默认1.5倍四分位差
plt.boxplot(data,whis=3)
plt.show()
# 显示平均值 显示平均线
plt.boxplot(data,showmeans = True,meanline = True)
plt.show()

绘制子图

# 2行1列的子图,这是两张图的第一张
plt.subplot(2,1,1)

导入数据

import pandas as pd
data = pd.read_table('./salay.txt',sep='\t')
data

设置字体

plt.rc('font',**{'family':'microsoft yahei,simhei'})

显示

plt.subplot(2,2,1)
plt.plot(data['城市'],data['月均工资'])
plt.show
# 把城市设置成索引
data = data.set_index('城市')
# 横向显示 堆叠起来
data.plot(kind='barh',stacked=True)
plt.show()
#保存
plt.savefig('./test.png')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值