机器学习--matplotlib绘制各种图表
机器学习三剑客:numpy、pandas、matplotlib
NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵。
pandas 是基于numpy的一种工具,该工具是为了解决数据分析任务而创建的。
Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。
柱状图bar
from matplotlib import pyplot as plt
import matplotlib
# 显示图表,仅限于jupyter使用
%matplotlib inline
#指定默认字体
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
# 第一个参数:索引
# 第二个参数:高度 参数必须对应否则报错
plt.bar(range(5),[100,200,300,400,500],color='red')
plt.xticks(range(5),['A','B','C','D','E'])
plt.xlabel('姓名')
plt.ylabel('得分')
plt.title('学生得分')
# 或显示图标Plt.show()
饼图pie
labels = ['A','B','C','D']
# autopct='%1.1f%%'显示比列,格式化显示一位小数,固定写法
plt.pie([50,39,50,20],labels=labels,autopct='%1.1f%%')
plt.title('人口比例')
直方图hist
from matplotlib import pyplot as plt
import matplotlib heights = [180,160,172,177,160]
plt.hist(heights,color='red',alpha=0.5)
# 横轴heights,纵轴当前值的个数
plt.xlabel('身高')
plt.ylabel('人数')
plt.title('身高统计')
散点图scatter
# 5、绘制一个散点图
# 用random模块获取两组数据,分别代表横纵坐标。一组数据里有50个数,
# 用随机种子的方法固定住random模块获取得到的数据
# 并将散点图里的符号变为'*'
import numpy as np
np.random.seed(10) # 随机种子,将随机数固定住
heights = []
weights = []
heights.append(np.random.randint(150,185,size=50))
# weights.append(np.random.normal(loc=50,scale=100,size)) # 生成正太分布,也称高斯分布
weights.append(np.random.randint(50,100,size=50))
plt.scatter(heights,weights,marker='*',color='yellow') #默认是圆点,marker='*'
折线图plot
x = [4,65,71,5,3]
y = [3,12,5,2,3]
plt.plot(x,y)
# plt.savefig('a.jpg') # 保存图片
面积图
from matplotlib import pyplot as plt
import numpy as np
# 导入3D模块
from mpl_toolkits.mplot3d.axes3d import Axes3D
import matplotlib
#指定默认字体
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
# 面积图
def test_area():
date = ['2000-01-01','2000-02-01','2000-03-01','2000-04-01']
earn = [156,356,156,30]
eat = [10,20,30,40]
drink = [20,20,30,40]
play = [20,20,30,40]
# [20,20,30,40]]
plt.stackplot(date,earn,eat,drink,play,colors=['red','yellow','green','blue'])
plt.title('收入支出面积图展示')
plt.plot([],[],color='red',label='收入')
plt.plot([],[],color='yellow',label='吃')
plt.plot([],[],color='green',label='喝')
plt.plot([],[],color='blue',label='玩')
# 展示图例
plt.legend()
plt.show()
test_area()
3D饼图突出展示
def test_pie():
beijing = [10,20,30,40]
label = ['2-3年','3-4年','4-5年','5年']
color = ['red','yellow','green','blue']
indict = []
for index,item in enumerate(beijing):
# 判断优先级
if item == max(beijing):
indict.append(0.3)
elif index == 1:
indict.append(0.2)
else:
indict.append(0)
plt.pie(beijing,labels=label,colors=color,startangle=90,shadow=True,explode=tuple(indict),autopct='%1.1f%%')
plt.title('3D切割凸显饼图')
plt.show()
test_pie()
条形图
def test_barh():
price = [11,22,33,44]
plt.barh(range(4),price,align='center',color='red',alpha=0.5)
plt.xlabel('价格')
plt.yticks(range(4),['红楼梦','西游记','水浒传','三国演义'])
plt.title('四大名著')
plt.show()
test_barh()
3D散点图
def test_scatter_3D():
x = np.random.randint(0,10,size=100)
y = np.random.randint(0,10,size=100)
z = np.random.randint(0,10,size=100)
# 创建二维对象
fig = plt.figure()
# 强转
axes3d = Axes3D(fig)
# 填充数据
axes3d.scatter(x,y,z)
plt.show()
test_scatter_3D()
趋势图
def test_line():
x = ['2000-01-03','2000-02-03','2000-03-03','2000-04-03']
# 定义y轴数据
y1 = [0,3,5,7]
y2 = [11,22,33,44]
plt.plot(x,y1,label='tempreature')
plt.plot(x,y2,label='water')
# 显示图例
plt.legend()
plt.show()
test_line()
箱型图
import pandas as pd
# 定义消费分析
def test_tips(pd):
# 读取数据集
df = pd.read_excel('tips.xlsx','sheet1') # 绘制散点图证明推论:小费随着总账单的递增而递增
# df.plot(kind='scatter',x='tip',y='total_bill',c='red',label='bill_tip') # 绘制箱型图
# 计算小费占总账单的比例
df['pct'] = df.tip / df.total_bill * 100
# print(df)
# 过滤出小费占比比较高的人群,例如:30%以上
print(df[df.pct > 30])
# 删除异常数据,按照索引删除
df = df.drop([67,172,178])
# print(df)
# 打印箱型图
df.pct.plot(kind='box',label='tips pct%')
# 绘制
plt.show()
test_tips(pd)
散点图绘制如下:
箱型图绘制如下:
对比柱状图、小提琴图
import seaborn as sns
# 定义数据分析方法
def test_excel():
# 读取数据集
df = pd.read_excel('test.xlsx','sheet1')
# print(df)
# 需求
# 计算按性别和人体质量分组,求销售额
# select sum(sales),gender,BMI from test group by gender,BMI
myexcel = df.groupby(['BMI','Gender']).Sales.sum()
print(myexcel)
# 绘制对比柱状图unstack
myexcel.unstack().plot(kind='bar',stacked=True,color=['red','green']) # # 利用seaborn绘制,小提琴图
# sns.violinplot(df['Age'],df['Gender'])
# # 初始化数据
# sns.despine()
# 绘制
plt.show()
test_excel()
柱状图效果如下:
小提琴效果图如下:
机器学习--matplotlib绘制各种图表的更多相关文章
- Python Matplotlib绘制气温图表
代码中数据从 www.wunderground.com/history/ 下载 #coding=utf-8 import csv from datetime import datetime from ...
- 使用matplotlib绘制常用图表(3)-其他图表绘制
一.绘制三点图 """ 三月份最高气温 a = [12,15,18,6,7,5,6,8,9,10,15,10,4,5,11,10,5,6,12,15,10,5,14,10 ...
- 使用matplotlib绘制常用图表(2)-常用图标设置
一.使用subplots绘制子图 import numpy as np from matplotlib import pyplot as plt %matplotlib inline x = np.a ...
- 使用matplotlib绘制常用图表(1)
#导入相关包from matplotlib import pyplot as plt import matplotlib from matplotlib import font_manager #初始 ...
- 【转】使用Python matplotlib绘制股票走势图
转载出处 一.前言 matplotlib[1]是著名的python绘图库,它提供了一整套绘图API,十分适合交互式绘图.本人在工作过程中涉及到股票数据的处理如绘制K线等,因此将matplotlib的使 ...
- 用Python的Pandas和Matplotlib绘制股票唐奇安通道,布林带通道和鳄鱼组线
我最近出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,京东链接:https://item.jd.com/69241653952.html,在其中给出了MACD,KDJ ...
- 用Python的Pandas和Matplotlib绘制股票KDJ指标线
我最近出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,京东链接:https://item.jd.com/69241653952.html,在其中给出了MACD,KDJ ...
- matplotlib绘制动画
matplotlib从1.1.0版本以后就开始支持绘制动画,具体使用可以参考官方帮助文档.下面是一个很基本的例子: """ A simple example of an ...
- 用Matplotlib绘制二维图像
唠叨几句: 近期在做数据分析,需要对数据做可视化处理,也就是画图,一般是用Matlib来做,但Matlib安装文件太大,不太想直接用它,据说其代码运行效率也很低,在网上看到可以先用Java做数据处理, ...
随机推荐
- 分析Android APK- smali 语言简介
2.1 smali 语言简介 1.smali apk文件通过apktool反编译出来的都有一个smali文件夹,里面都是以.smali结尾的文件. smali语言是Davlik的寄存器语言,语法上和汇 ...
- 20190608_浅谈go&java差异(三)
20190608_浅谈go&java差异(三) 转载请注明出处https://www.cnblogs.com/funnyzpc/p/10990703.html 第三节内容概览 多线程通讯(线程 ...
- 023.[转] 尚硅谷_Maven笔记
- Angular框架入门
今天简单学习了AngularJS框架,在这里我想简单的总结一下我所了解的AngularJS和一些入门案例! 首先,我们要知道什么是AngularJS? AngularJS 诞生于2009年,由Mis ...
- 算法之冒泡排序手写之js写法andjava写法
对于经典算法,你是否也遇到这样的情形:学时觉得很清楚,可过阵子就忘了? 本系列文章帮助你解决这个问题. 其实排序算法,仔细品读他的名字就见名知意了. 比如冒泡排序就很形象,遍历n次,每次循环相邻元素两 ...
- js设置定时执行
具体语法参考:https://www.runoob.com/jsref/met-win-setinterval.html var timer = window.setInterval(function ...
- 【tf.keras】tensorflow datasets,tfds
一些最常用的数据集如 MNIST.Fashion MNIST.cifar10/100 在 tf.keras.datasets 中就能找到,但对于其它也常用的数据集如 SVHN.Caltech101,t ...
- IT兄弟连 HTML5教程 HTML5表单 HTML表单设计1
表单是PHP程序中最常使用的收集站点访问者信息的数据输入界面.通过表单浏览器获取用户的输入数据,并传送给Web服务器的脚本程序中,以各种不同的方式进行处理.在表单中提供了多种输入方式,包括文本输入域. ...
- 你真的会用搜索吗?—— google 搜索技巧
鄙人用了那么多年 google ,却只会简单的空格. 虽然空格已经很强大了.google 对此做了非常多的优化,原则是让你只用最基础的输入搭配空格就能达到跟下面介绍的方法几乎一样的效果,但是还有知道一 ...
- 03-MySQL安装与配置
一.安装MySQL 1.我的是centos8,因此命令为: sudo yum install mysql-server 2.安装完成后查看是否启动 ps aux|grep mysql 3.启动mysq ...