Matplotlib

Posted bc10

tags:

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

导入Matplotlib库

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

(上方代码块是自动绘图(省略show的方法))

1.查看都有什么风格style

# 查看可用风格
plt.style.available

2.设置绘图风格

plt.style.use("seaborn")
plt.plot( [1, 2, 3])
plt.title(这是一张图)

3.设置支持中文字体显示

# windows 电脑
plt.rcParams[font.sans-serif]=[SimHei]
plt.rcParams[axes.unicode_minus] = False
# mac 电脑
plt.rcParams[font.family] = [Arial Unicode MS] #正常显示中文
plt.plot( [1, 2, 3])
plt.title(这是一张图)

4.绘制折线图

plot 折线图接口

plot(x, y, ‘go--‘, linewidth=2, markersize=12)
plot(x, y, color=‘green‘, marker=‘o‘, linestyle=‘dashed‘,
     linewidth=2, markersize=12)
  • color 颜色
  • linewidth 线宽
  • markersize 点大小
  • fontsize 字体
  • marker 点形状
  • linestyle 线风格
  • linewidth 线宽
  • lable 标签
  • alpha 透明度
x = [1,2,3,4]
y = [2,4,1,6]
# plot 折线图
plt.plot(x, y )
# 第三个参数  颜色、点形状、线形状
plt.plot(x, y ,ro:)
# 原装的只有上面的三种,其他的需要自己设置参数修改。

plt.plot(x , y , color= #104E8B , linewidth =3,
       marker = D, markersize= 9, linestyle = --,
         label = 一条线 , alpha = 0.9
        )

 5.绘制一个常见函数曲线

# 生成数据, 生成横坐标
x = np.arange(0,10,0.1)
# 生成 y 
y = np.sin(x)
plt.plot(x,y)

6.添加常见图例属性

  • plt.figure 图片基本设置
    • figsize = (x,y) 调节图片大小
    • dpi 图像清晰度
  • plt.title 添加标题
  • plt.xlabel(‘‘) plt.ylabel(‘‘) x轴和y轴添加标签

  • plt.grid(True) 添加网格

  • plt.xlim(-1,20) plt.ylim(-1,1) 设置坐标轴范围
  • plt.text 图片添加文本
  • plt.legend 添加图例
plt.figure(figsize = (8,5),dpi = 100)
plt.plot(x,y,ro-,label = sin图像)
plt.title(sin图像,fontsize = 20 , color = "b" , loc = left)
plt.xlabel(x坐标,fontsize = 20 , color = "b")
plt.ylabel(y坐标,fontsize = 20 , color = "b")
plt.grid(False)  #去掉网格
plt.xlim(-5,15) 
plt.ylim(-2,2) 
plt.text(-5,-2.5,  我看下在哪 , color = g , fontsize = 20)
plt.legend(fontsize = 20)

7.使用Pandas数据进行画图

grade = pd.read_csv(student_grade.txt,sep=	)
plt.plot(grade.总分)

柱状图

s1 = [1, 2, 3, 4, 5]
s2 = [10, 13, 6, 3, 12]
plt.bar(s1, s2)

直方图

bar是用来把你已经总结好的数据画出来,可以用来对比各个组的数据。

hist是制作一个频率分布图,比如说把一个数据分成10个部分,每个部分的频率是多少。 大概看一下数据的分布。

# bins = [0, 60, 90, 120, 135, 150]
plt.hist(grade.语文 , 5,  rwidth=0.8 , )

散点图

plt.scatter

  • s 散点的点尺寸
  • c 颜色尺寸
  • cmap 颜色映射方法
# c 颜色数值 , s 尺寸数值, cmap 映射方法
x = np.arange(1,10)
plt.scatter(x, x , c = x , s= x*100,
           cmap= rainbow)

饼状图

    x, 数据
    explode=None, 哪部分突出显示 (0, 0, 0.3, 0)
    labels=None, 标签名称
    colors=None, 颜色
    autopct=None,百分号显示格式
    pctdistance=0.6, 数字和边缘距离
    shadow=False, 阴影
    labeldistance=1.1, 标签距离
    startangle=None, 角度
    radius=None, 饼图半径
    counterclock=True, 逆时针
labels = [ 吃饭, 交通, 游戏, 衣服]
data = [1000, 100, 500, 2000]
plt.pie(data,labels=labels,explode=(0.1, 0, 0.3, 0),autopct=%1.1f%%, 
        shadow=True,   colors=[r, k, g, b]);

8.创建子图

 MATLAB风格接口
plt.figure() # 创建图形
x = np.linspace(0, 10, 100)
# 创建两个子图中的第一个,设置坐标轴
plt.subplot(2, 1, 1) # (行、列、子图编号)
plt.plot(x, np.sin(x))
# 创建两个子图中的第二个,设置坐标轴
plt.subplot(2, 1, 2)
plt.plot(x, np.cos(x))

 9.读取数据画图

stock_data = pd.read_csv(yahoo_stock.csv)
stock_data

10.保存图片

plt.figure(dpi=100)
plt.plot(data.Open)
# data.Open.plot( title=‘yahoo‘, legend=True,)
plt.xlabel(日期)
plt.ylabel(指数)
plt.plot([],[],linewidth=3, label=loss, color=r,alpha=0.5)
plt.plot([],[],linewidth=5, label=gain, color=g,alpha=0.5) # 添加标注
plt.axhline(data.Open[0], color=k, linewidth=2)
plt.annotate(Bad News!,(2003-01-01, 10),
                 xytext=(100, 200), textcoords=figure points,
                 arrowprops = dict(facecolor=grey))
plt.legend()
# 在两天线之间实现填充,和 第一天的开盘价相比较,高的用绿色,低的用红色。
plt.fill_between(data.index, data.Open,data.Open[0] , where=(data.Open > data.Open[0]), facecolor=g, alpha=0.5)
plt.fill_between(data.index, data.Open,data.Open[0] , where=(data.Open < data.Open[0]), facecolor=r, alpha=0.5)
plt.savefig(my_figure.png)

显示硬盘图片

from IPython.display import Image
Image(filename=yahoo_stock.png)

 

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

在 matplotlib 内联和 QT 后端之间切换 Python 脚本

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

如何将csv数据加载到matplotlib?

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

Matplotlib模块

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