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='\t')
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')

 

posted @ 2019-10-18 13:22  小稣  阅读(172)  评论(0编辑  收藏  举报