Matplotlib可视化

慢慢啃书ing


前言

      最近在读《数据科学导论Python语言实现》,阅读的时候遇到了很多困难:代码过旧,有些库已经被取代或合并了;知识太深奥,小白读不懂QAQ......

       陆陆续续看了一些,目前实在是读不下去了(跳读ing),在看最后一章的Matplotlib可视化这一章,给大家整理分享一下书中代码的解读,希望能帮助到大家的学习!


一、曲线绘图

函数绘图:获取一系列x坐标值,通过特定函数将它们映射到y轴即可

使用NumPy的linspace()函数,创建一个从0到5等间距、具有50个样本的数字序列

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 5, 50)
y_cos = np.cos(x)
y_sin = np.sin(x)

plt.figure() # 开始画图咯
plt.plot(x,y_cos) # 第一个参数是x值,第二个参数是y值
plt.plot(x,y_sin)#它这里画了2条线
plt.xlabel('x') # x轴的名称
plt.ylabel('y') # y轴的名称
plt.title('title') # 表名
plt.show() 

二、绘制分块图,创建子窗口

基本语法:
plt.subplot(nrows,ncols,plot_number)
#指定划分nrows行,ncols列
#第plot_number区域上画图(从左边第1个区域开始计数)
import matplotlib as mpl
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 5, 50)
y_cos = np.cos(x)
y_sin = np.sin(x)
plt.subplot(1,2,1) # defines 1 row 2 column panel, activates figure 1
plt.plot(x,y_cos,'r--')
plt.title('cos') # adds a title
plt.subplot(1,2,2) # defines 1 row 2 column panel, activates figure 2
plt.plot(x,y_sin,'b-')
plt.title('sin')
plt.show()

plt.plot(x坐标值,y坐标值,控制曲线的格式字符串,....)

控制曲线的格式字符串:可选,它由颜色字符、风格字符和标记字符组成

如 plt.plot(x,x,'b-',x,y_cos,"r+")

后面的省略符代表可以加多组曲线在一张图上

三、散点图

from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt

D = make_blobs(n_samples=100, n_features=2, centers=3, random_state=7)#生成3类数据用于聚类(100个样本,每个样本有2个特征)
#这里的特征也表示维度,二维的嘛,这里返回值是元组
groups = D[1]#这是数据集的特征值
coordinates = D[0]#这是每个样本的标签类别

plt.plot(coordinates[groups==0,0], coordinates[groups==0,1], 'ys', label='group 0') # label参数为每个分组分配名称
plt.plot(coordinates[groups==1,0], coordinates[groups==1,1], 'm*', label='group 1')
plt.plot(coordinates[groups==2,0], coordinates[groups==2,1], 'rD', label='group 2')
# coordinates[groups==1,0]是这么来理解的,groups==1返回的是布尔数组
# groups==1用于在coordinates数组中选择类别为1的样本,然后使用逗号分隔的切片操作[:,0]
# 真牛逼
plt.ylim(-2,10) # 限定y坐标的幅度,范围为-2到10
plt.yticks([10,6,2,-2]) # y轴刻度
plt.xticks([-15,-5,5,-15]) # x轴刻度
plt.grid() # 将图形划分为9个区域
plt.annotate('Squares', (-12,8)) # 使用注解命令为每个分组打印上名称
plt.annotate('Stars', (0,6))
plt.annotate('Diamonds', (10,3))
plt.legend(loc='lower left', numpoints= 1) # 图注的位置
plt.show()

使用make_blobs生成数据,该方法返回的是元组,包含特征值和类别分类!

D1=make_blobs(n_samples=5,n_features=2,centers=4)

 四、直方图

语法

plt.hist(x,bins,histtype,color,stacked);

x是一维数组,bin是直方图的柱数

histtype:{‘bar’, ‘barstacked’, ‘step’, ‘stepfilled’};

'bar’是传统的条形直方图;'barstacked’是堆叠的条形直方图;'step’是未填充的条形直方图,只有外边框;‘stepfilled’是有填充的直方图;当histtype取值为’step’或’stepfilled’,rwidth设置失效,即不能指定柱子之间的间隔,默认连接在一起

stacked是布尔值。如果取值为True,则输出的图为多个数据集堆叠累计的结果;如果取值为False且histtype=‘bar’或’step’,则多个数据集的柱子并排排列

import numpy as np
import matplotlib.pyplot as plt
x = np.random.normal(loc=0.0, scale=1.0, size=500)#loc是均值,scale是标准差,size是输出值的维度
z = np.random.normal(loc=3.0, scale=1.0, size=500)
plt.hist(np.column_stack((x,z)), bins=10, histtype='bar', color = ['c','b'], stacked=False)
#这里的column是列合并(左右拼接),row_stack是行合并(上下拼接)
plt.grid()#显示网格线
plt.show()

五、柱状图

from sklearn.datasets import load_iris
import numpy as np
import matplotlib.pyplot as plt

iris = load_iris()
average = np.mean(iris.data, axis=0)      #axis=0是将最后数据输出为一行,计算每列的平均值
std= np.std(iris.data, axis=0)#计算标准差    #同理当axis=1时,最后计算结果为一列
range_= np.arange(np.shape(iris.data)[1])   #np.shape(iris.data)返回值是(150, 4)
# print(np.shape(iris.data))

plt.subplot(1,2,1) # 区域划分为1行2列
plt.title('Horizontal bars')
plt.barh(range_,average, color="r", xerr=std, alpha=0.4, align="center")#水平柱状图
plt.yticks(range_, iris.feature_names)#第一个参数是坐标轴刻度,第二个参数是另一个坐标刻度上的标签
plt.subplot(1,2,2) # 区域划分为1行2列,并从第二块图形作画
plt.title('Vertical bars')
plt.bar(range_,average, color="b", yerr=std, alpha=0.4, align="center")#垂直柱状图,yerr指定误差条长度
plt.xticks(range_, ['hua','dui','1','2'])
plt.show()


总结

      以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 23
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值