Matplotlib 的使用

Posted pupy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matplotlib 的使用相关的知识,希望对你有一定的参考价值。

Matplotlib

  作图工具包,一般配合 numpy 和 pandas 一起使用

导入

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt  # 约定俗成 起别名 plt

# 会出现警告,不是错
D:UsersoldboyAnaconda3libimportlib\\_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject
  return f(*args, **kwds)

 配置

# windows下好使
# 防止中文乱码
plt.rcParams[font.sans-serif] = [SimHei]
plt.rcParams[axes.unicode_minus] = False

 小例子

# 画一个简单的折线图
a = [3,1,10,6]  # 默认显示Y轴的值
plt.plot(a)   # plot()画折现图的函数
plt.show()   # 显示画的图表

                              结果:            

                                      技术图片

 曲线图

x = [2,5,7,10]
y = [1,2,3,4]

plt.figure(figsize=(10,6))  # 设置画布大小

plt.title(title标题, fontsize=20, color=red)  # 设置图表的标题
plt.xlabel(x轴, fontsize=20)   # 设置x轴的信息
plt.ylabel(y轴, fontsize=20)   # 设置y轴的信息

plt.plot(x, y, color=k, marker=D, linestyle=:)   # 画图(颜色、标记点,线条样式)
plt.show()  # 显示

 

                        结果:       

                       技术图片

 

 柱状图的绘制

    绘制每个国家或者地区的电影数量的柱状图

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv(./douban_movie.csv)  # 读取数据
df.head()  # 显示前5条
# df.tail()  # 显示后5条

     展示:

         技术图片

# 继续操作,以‘产地’为分组依据
res = df.groupby(产地).size().sort_values(ascending=False)  # size() 可以获取值的大小
# sort_values 按照值进行排序  sort_index 按照索引进行排序
res  # 查看 res

                            展示:         

                                 技术图片

# 绘图
x = res.index
y = res.values
plt.figure(figsize=(20,6))

plt.title(每个国家或者地区的电影数量, fontsize=20)

plt.xticks(rotation=90, fontsize=15, color=red)  # 设置x轴字体的角度、大小和颜色
plt.xlabel(产地, fontsize=20)  # x 轴标注信息

plt.yticks(fontsize=15)
plt.ylabel(数量, fontsize=20)

for a, b in zip(x,y):  # 显示数据文本
    plt.text(a, b+100, b, horizontalalignment=‘center‘, fontsize=13)
    # 分别为:x轴位置, y轴位置, 文本位置, 文本字体

plt.bar(x, y)  # 表示绘制柱状图
# plt.savefig  # 保存图
plt.show()

          结果:

                         技术图片

 饼图的绘制

   根据电影的长度绘制饼图

# 知识点补充
pd.cut(np.array([1, 7, 5, 4, 6, 3]), [1,3,5])
# 结果:
[NaN, NaN, (3.0, 5.0], (3.0, 5.0], NaN, (1.0, 3.0]]
Categories (2, interval[int64]): [(1, 3] < (3, 5]]
‘‘‘
规则:将ndarray数据以1,3,5位分割点进行对比,在区间内就显示该区间,不在则显示nan
‘‘‘                                            
----------------------------------------------------------------------------
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv(./douban_movie.csv)  # 读取数据
df_res = df[时长]
df_res  # 查看

 

                               展示: 

                             技术图片

# df_res 是待分割的源数据  [0,60,90,120, 140, 1000] 是区间 左开右闭
res = pd.cut(df_res, [0,60,90,120, 140, 1000]) 
res  # 查看res

                            展示:

                        技术图片

res = res.value_counts()  # 统计
-----------------------------------------------------------------------------
# 结果:
(90, 120]      16578
(0, 60]        10324
(60, 90]        7727
(120, 140]      2718
(140, 1000]     1386
Name: 时长, dtype: int64

 

# 绘制饼图
x = res.index
y = res.values
plt.title(电影时长分布饼图, fontsize=20)

l_text, p_text = plt.pie(y, labels = x, autopct=‘%.2f%%‘)  # l_text, p_text都是多个值的列表

for p in p_text:
    p.set_size(15)  # 设置图内的文本大小
    p.set_color(white)   # 设置图内的文本颜色
 
for l in l_text:
    l.set_size(13)  # 设置标签(图外)的文字大小
    l.set_color(r)  # 设置标签(图外)的文字颜色
    
plt.show()

 

                              结果:

                              技术图片

 

 

 

 

以上是关于Matplotlib 的使用的主要内容,如果未能解决你的问题,请参考以下文章

实时matplotlib图在循环中不起作用[重复]

Python matplotlib 基础练习:画出正弦曲线等

如何将csv数据加载到matplotlib?

为xp轴指定matplotlib.pyplot直方图的值

数据可视化代码实例(Matplotlib+Pandas)

%matplotlib inline