导入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)
- 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')