美文网首页我爱编程
第八章 绘图和可视化

第八章 绘图和可视化

作者: 进步小小青年 | 来源:发表于2017-09-05 22:36 被阅读0次

[链接]

01. matplotlib API入门

02. Pandas中的绘图函数

03. 绘制地图:图形化显示海地地震危机数据

04. Python图形化工具生态系统

——

1. matplotlib API入门

* matplotlib API(如plot和close)都位于matplotlib.pyplot模块中,其通常的引入约定是:

import matplotlib.pylot as plt

Figure 和 Subplot

  • matplotlib 的图像都位于Figure对象中,可以利用plt.figure创建一个新的Figure:
    fig=plt.figure()

pandas中的绘图函数

  • 要组装一张图标,需要用到的基础组件:

    & 数据展示(即图表类型:线型图、柱状图、盒形图、散布图、等值线图等)

    & 图例、标题、刻度标签以及其他注解型信息

——————————————————————————

lesson7 matplotlib

——————————————————————————

matplotlib绘图基础

在绘图开始之前,首先需要导入一些常用工具
导入matlpotlib绘图工具
import matplotlib.pyplot as plt
导入numpy和pandas包
import numpy as np
import pandas as pd
设置在notebook中直接展示图形输出
%matplotlib inline
设置图片的清晰度
%config inlinebackend.figure_format='retina'
1.使用matplotlib中的plot绘图函数 plt.plot(x,y)
2.设置填充颜色和透明度 plt.fill_between(x,y,color='k',alpha=0.2)
3.添加标题、x轴和y轴的名称
  • 标题:plt.title('sine function',size=18)
  • X轴:plt.xlabel('x',size=16)
  • Y轴:plt.ylabel('y',size=16)
4.修改图形细节
  • "b"代表blue,指定蓝色,"- / --"指定线条的种类
  • linewidth指定线的粗细
plt.plot(x, y, "b-", linewidth=2.0)
5.在图形上增加其他常用选项
  • marker加上书记点标记 ,选项包括 [ '+' | ',' | '.' | '1' | '2' | '3' | '4' ]
  • plt.axis([0, 5, -1.1, 1.1])设定x轴和y轴区间,等价于plt.xlim(0,5) 加上 plt.ylim(-1.1, 1.1)
  • 加上网格 plt.grid(True)
  • 加上文字描述 plt.text(3.1, 0.3, 'sin functoin')
* 实际演练:利用上面的知识,画一张图,作图如下:

y=x, y=x^2, y=x^3

6.函数的分组与聚合
  • groupby分组,并使用agg进行聚合运算,sum求交易总额,count计算交易次数
  • reset_index 重置索引,在这里取消了name作为索引
  • sort_values 进行排序,参数by设置按哪一列进行排序,ascending=False 表示按降序排列
df.groupby('name')['ext price'].agg(['sum','count'])——函数的分组与聚合
.reset_index()——重置索引
.sort_values(by='sum',ascending=False)——按by后面的内容(sum)重新排序
其中 ascending=False 表示按降序排列
7. 使用rename对变量重新命名

top10.rename(columns={'name': 'Name', 'sum': 'Sales', 'count': 'Purchases'}, inplace=True)

8. 绘图函数
  • 使用ggplot风格的作图
    plt.style.use('ggplot')
* 8.1条形图

barh绘制水平方向的条形图, bar绘制垂直的直方图

  • 修改纵坐标和横坐标的刻度
    plt.yticks(np.arange(10), top10.Name)—将纵坐标修改为排名前10的公司名字
    plt.xticks——修改横坐标刻度
  • plt.yticks(np.arange(10), top10.Name)
  • plt.xticks([0, 20000, 40000, 60000, 80000, 100000, 120000, 140000],
    ['$0k', '$20k', '$40k', '$60k', '$80k', '$100k', '$120k', '$140k'])

图一

图二

  • 可以使用plt.style.available查看可选作图风格,尝试不同的风格作图

plt.style.available

  • ['_classic_test',
  • 'bmh',
  • 'classic',
  • 'dark_background',
  • 'fivethirtyeight',
  • 'ggplot',
  • 'grayscale',
  • 'seaborn-bright',
  • 'seaborn-colorblind',
  • 'seaborn-dark-palette',
  • 'seaborn-dark',
  • 'seaborn-darkgrid',
  • 'seaborn-deep',
  • 'seaborn-muted',
  • 'seaborn-notebook',
  • 'seaborn-paper',
  • 'seaborn-pastel',
  • 'seaborn-poster',
  • 'seaborn-talk',
  • 'seaborn-ticks',
  • 'seaborn-white',
  • 'seaborn-whitegrid',
  • 'seaborn']

* 绘制多图

在同一幅图中,分别绘制top10公司的销售总额和交易次数的条形图

  • 设置画布大小——fig = plt.figure(figsize=(12,5))
  • 加上图像标题, fontsize=14 字体大小, fontweight='bold' 加粗
    fig.suptitle('Sales Analysis', fontsize=14, fontweight='bold')
  • 添加第一个子图——ax1 = fig.add_subplot(121)
    plt.barh(np.arange(10), top10.Sales, height=0.5, tick_label=top10.Name)
    plt.title('Revenue')
  • 加入平均销售额,用一条垂直的虚线表示
    revenue_average = top10.Sales.mean()
    plt.axvline(x=revenue_average, color='b', linestyle='--', linewidth=1)
  • 添加第二个子图——ax2 = fig.add_subplot(122)
    plt.barh(np.arange(10), top10.Purchases, height=0.5)
    plt.title('Units')
  • 不显示y轴刻度
    plt.yticks(visible=False)
  • 加入平均交易个数,用一条垂直的虚线表示
    purchases_average = top10.Purchases.mean()
    plt.axvline(x=purchases_average, color='b', linestyle='--', linewidth=1)
Paste_Image.png
* 8.2饼图
  • pie绘制饼图
  • labels设置每个区域的标签名 labels=top10.Name
  • autopct 显示所占比例 autopct='%1.1f%%')—1.1代表100%后保留一位小数
  • plt.axis('equal') 调整坐标轴相等
    饼图图例如下

图三

* 8.3 散点图
  • scatter 绘制散点图
  • x,y设置x轴和y轴对应的数据
  • s设置点的大小
    plt.scatter(x=top10.Purchases, y=top10.Sales, s=50)
    散点图图例如下

图四

* 8.4直方图
  • hist 绘制直方图
  • bins设置区间个数
  • plt.xlim(-200, 5000)设置x轴区间范围
    plt.hist(df['ext price'], bins=20, rwidth=0.9)
  • 设置宽度 rwidth=0.5(为什么width前面加 r ?)
    直方图图例如下

图五

Python数据可视化模块—Seaborn

  • matplotlib是python的主要绘图工具,但其自身的语法比较复杂
  • Seaborn是基于matplotlib产生的一个模块,专攻于统计可视化
  • 可以和pandas进行无缝链接,初学者使用Seaborn更容易上手
  • Seaborn和matplotlib的关系类似于pandas和numpy的关系。
1.导入数据包
  • 导入seaborn包, 简写成sns
    import seaborn as sns
使用seaborn做图, 用品种划分数据
  • FacetGrid对象是用来连接pandas DataFrame到一个有着特别结构的matplotlib图像
  • 具体来说,FacetGrid是用来画一组固定的关系给定某个变量的某个值
  • FacetGrid中的hue参数指明划分数据的变量,这里是species(品种)

1.1 散点图

sns.FacetGrid(iris, hue="species", size=8).map(plt.scatter, "petal_length", "petal_width").add_legend()

图六

1.2 箱图
sns.boxplot(data=iris, x="species", y="sepal_width")

图七

1.3 多变量图

用于快速观察各个变量的分布,及其之间的关系

  • 一行命令画出四个变量的配对关系
    sns.pairplot(iris, hue="species")
Paste_Image.png

相关文章

网友评论

    本文标题:第八章 绘图和可视化

    本文链接:https://www.haomeiwen.com/subject/jjoujxtx.html