当前位置: 首页 > news >正文

男神鹏:python 机器学习三剑客 之 Matplotlib

Matplotlib介绍:

    Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形 

    通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。

Matplotlib基础知识:    
     Matplotlib中的基本图表包括的元素
     x轴和y轴
     水平和垂直的轴线
     x轴和y轴刻度
     刻度标示坐标轴的分隔,包括最小刻度和最大刻度
     x轴和y轴刻度标签
     表示特定坐标轴的值
     绘图区域
     实际绘图的区域
 
Matplotlib形状代码:
首选是折线图:  
# 导包
import matplotlib.pyplot as plt
# 导入字体库
from matplotlib.font_manager import FontProperties


font = FontProperties(fname="C:/Windows/Fonts/simkai.ttf",size=15)
# 填充数据
# plt.plot(['3-1','3-2','3-3'],[1,10,9])

# 绘制方法
# plt.show()

# 定制数据
x1 = ['3-1','3-2','3-3','3-4','3-5']
y1 = [2,6,4,9,7]

x2 = ['3-1','3-2','3-3','3-4','3-5']
y2 = [13,18,11,12,5]

plt.plot(x1,y1,label='temperature')
plt.plot(x2,y2,label='water')

# 设置标题
plt.title('温湿度显示图',FontProperties=font)

plt.legend()

plt.show()
 
树状图:
 
# 导包
import matplotlib.pyplot as plt
# 导入字体库
from matplotlib.font_manager import FontProperties

font = FontProperties(fname="C:/Windows/Fonts/simhei.ttf",size=15)


# 设置数据
salary = [9000,10000,12000,5000,4000]
group = ['beijing','qinhuangdao','xingtai','handan','shijiazhuang']

plt.bar(group,salary)

plt.title('全国各市工资水平',FontProperties=font)

plt.show()
 
散点图:
 
# 导包
import matplotlib.pyplot as plt
# 导入字体库
from matplotlib.font_manager import FontProperties

import numpy as np

font = FontProperties(fname="C:/Windows/Fonts/simhei.ttf",size=15)


# 设置数据
# plt.scatter(2,4)

# 定义x轴数据

x = list(range(0,101))
y = [xvalue * np.random.rand() for xvalue in x]

# 填充数据
# s 代表点的大小,和粗细
# c 点表点的颜色

plt.scatter(x,y,s=20,c='skyblue')

# 绘制
plt.show()
 
还可以运用面向对象来吧 图形封装成类,以下是封装成面向对象的图形代码。
# 导包
import matplotlib.pyplot as plt



# 定义一个绘图类
class TestPlot(object):

# 初始化赋值
def __init__(self,plt):
self.plt = plt

#定义内部属性
#解决中文乱码问题(第二种,第一种在d6中)
# 'font.sans-serif' 是matplotlib的内置key
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['font.family']='sans-serif'
#指定编码
plt.rcParams['axes.unicode_minus'] = False

# 定义横向条形图
def my_barh(self):
my_plt = self.plt
# 定义价格
price = [40.7,55,66,42.3]
# 将数据传入
my_plt.barh(range(4),price,align='center',color='skyblue',alpha=0.5)

# 设置标签
my_plt.xlabel('价格')

# 将数据传入y轴
my_plt.yticks(range(4),['红楼梦','三国演义','西游记','水浒传'])

# 设置上下限制

my_plt.xlim([10,80])

my_plt.title('四大名著')

my_plt.show()



# 定义柱状图
def my_bar(self):

my_plt =self.plt

# 定义数据
GDP = [11313.3,14131.3,14553.5,23452.6]

# 传入数据
my_plt.bar(['唐山','邢台','石家庄','邯郸'],GDP,align='center',color ='steelblue',alpha = 0.8)

my_plt.ylabel('生产总值')

my_plt.title('河北省GDP大比拼')
# 刻度范围
my_plt.ylim([5000,25000])
my_plt.show()


def my_pie(self):

my_plt = self.plt
 
# 定义数据
xingtai = [44,22,16,18]
# 定义标签
label = ['2-3年','3-4年','5-6年','6年以上']

color = ['red','skyblue','yellow','pink']

indic = []

# 使用enumerate方法来添加索引
 
for index,item in enumerate(xingtai):
if item == max(xingtai):
indic.append(0.5)
 
elif index == 1:
indic.append(0.3)
else:
indic.append(0)

 
# if item == max(xingtai):
# indic.append(0.1)
# else:
# indic.append(0)


my_plt.pie(
# 数据
xingtai,
# 标签
labels=label,
# 颜色
colors=color,
# 角度
startangle=90,
# 阴影
shadow=True,
# 突出显示
explode=tuple(indic),
# 格式化数字
autopct='%1.1f%%',
)

# 设置标题
my_plt.title('饼图示例-统计邢台工龄占比')
my_plt.show()




# 定义面积图方法
def my_area(self):
# 定义日期区间
date = ['2019.3.1','2019.3.2','2019.3.3','2019.3.4','2019.3.5','2019.3.6']

# 定义数据
# 收入
earn = [313,344,222,111,414,212]
 
# 支出
pay = [[15,44,33,56,33,77],[33,22,11,13,42,19]]

self.plt.stackplot(date,earn,pay,colors=['skyblue','yellow','red'])

# 生成图例
self.plt.plot([],[],color='skyblue',label='收入')
self.plt.plot([],[],color='yellow',label='午餐')
self.plt.plot([],[],color='red',label='晚餐')


# 设置标题
self.plt.title('面积图例,统一六天收入')
self.plt.legend()
self.plt.show()

if __name__ == "__main__":

# 实例化一个对象
testplot =TestPlot(plt)
testplot.my_area()
# testplot.my_bar()
# testplot.my_pie()
# testplot.my_barh()
 
以上全都是内置图形 ,还可以有扩展别的图形,例如小提琴图形。
首选要下载一个 seaborn 包
下载方式: pip install seaborn
下载之后利用此代码,就可以生成小提琴形状的比例了。
# 导包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns


if __name__ == "__main__":
 
# 读取数据集
df = pd.read_excel('test.xlsx','sheet1')
print(df)
# 绘制小提琴图
sns.violinplot(df['Age'],df['Gender'])
# 初始化数据
sns.despine()
# 绘制
plt.show()
 
 
谢谢参考!
 
 
      

    

 

转载于:https://www.cnblogs.com/lyp0626/p/10496995.html

相关文章:

  • 牛客小白月赛12
  • Django 模板继承extend 标签include block
  • hihocoder contest95 1、3、4题目分析 2赛后补题
  • Bsr.Form框架问题汇总
  • React中super(props)和super()以及不写super()的区别
  • Eclipse安装Web插件
  • 大战设计模式(第二季)【6】———— 从源码看享元模式
  • c:forEach varStatus 属性
  • Python excel 功能扩展库 —— openpyxl 的基本使用
  • python3获取自己ip
  • Gradle的使用
  • A direct formulation for sparse PCA using semidefinite programming
  • https
  • javascript自定义一个迭代器
  • w3resource_MySQL练习:Joins
  • JS 中的深拷贝与浅拷贝
  • #Java异常处理
  • 230. Kth Smallest Element in a BST
  • export和import的用法总结
  • javascript数组去重/查找/插入/删除
  • markdown编辑器简评
  • mongodb--安装和初步使用教程
  • PHP 7 修改了什么呢 -- 2
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • 初识 beanstalkd
  • 精彩代码 vue.js
  • 如何在GitHub上创建个人博客
  • 使用 QuickBI 搭建酷炫可视化分析
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 微信小程序填坑清单
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • puppet连载22:define用法
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (windows2012共享文件夹和防火墙设置
  • (分布式缓存)Redis哨兵
  • (规划)24届春招和25届暑假实习路线准备规划
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (转)ORM
  • .axf 转化 .bin文件 的方法
  • .libPaths()设置包加载目录
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .Net FrameWork总结
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .Net的C#语言取月份数值对应的MonthName值
  • @Transactional类内部访问失效原因详解
  • [ C++ ] 继承
  • [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——
  • [Angular] 笔记 7:模块
  • [AX]AX2012开发新特性-禁止表或者表字段
  • [C# 开发技巧]实现属于自己的截图工具
  • [C#]winform使用引导APSF和梯度自适应卷积增强夜间雾图像的可见性算法实现夜间雾霾图像的可见度增强
  • [hdu 1711] Number Sequence [kmp]