机器学习--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做数据处理, ...
随机推荐
- HDFS存入文件的整个流程
本文结合HDFS的副本和分块从宏观上描述HDFS存入文件的整个流程.HDFS体系中包含Client.NameNode.DataNode.SeconderyNameode四个角色,其中Client是客户 ...
- 百度BAE专业版申购SSL证书
这几天开发了一个小程序,本来想放到BAE基础版的,但是基础版现在不能再新增项目了,想了一下,出点血,配了个专业版.但是专业版的SSL证书是需要配的,而小程序必须使用https,所有必须申请一个证书.在 ...
- 32(1).层次聚类---AGNES
层次聚类hierarchical clustering 试图在不同层次上对数据集进行划分,从而形成树形的聚类结构. 一. AGNES AGglomerative NESting:AGNES是一种常用的 ...
- 多线程编程学习七( Fork/Join 框架).
一.介绍 使用 java8 lambda 表达式大半年了,一直都知道底层使用的是 Fork/Join 框架,今天终于有机会来学学 Fork/Join 框架了. Fork/Join 框架是 Java 7 ...
- Maven項目打包報錯:Plugin execution not covered by lifecycle configuration
Maven項目打包報錯:Plugin execution not covered by lifecycle configuration 使用Eclipse导入一个新的maven项目时不时的会遇到这个错 ...
- Python 周刊第 418 期
新闻 PyCon US 2020 开始接受财务赞助! https://pycon.blogspot.com/2019/10/financial-aid-launches-for-pycon-us-20 ...
- go面向对象之多态即接口(interface)
Go 语言接口 Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口. 实例 /* 定义接口 */ type interface ...
- Java编程思想——第21章 并发
前言 对于某些问题,如果能够并行的执行程序中的多个部分,则回变得非常方便甚至必要,这些部分要么看起来是并发执行,要么是在多处理环境下同时执行.并行编辑可以使程序执行速度得到极大提高,或者为设计某些类型 ...
- 发布一个简单的npm包
本文简单地记录了发布一个简单npm包的过程,以便后续参考使用. 初始化npm init 通过npm init创建一个package.json文件 D:\robin\lib\weapp-utils> ...
- jvm虚拟机笔记<五> 编译期优化
JVM的编译器可以分为三个编译器: 1.前端编译器:把.java转变为.class的过程.如Sun的Javac.Eclipse JDT中的增量式编译器(ECJ). 2.JIT编译器:把字节码转变为机器 ...