contents
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates#用于处理时间数据
常用参数
参数 | 调整部分 | 示例 |
---|---|---|
s | 点的面积 | s=100 |
c | 颜色 | c=‘r’ |
maker | 点的形状 | maker=’<’ |
alpha | 透明度 | alpha=0.5 |
常用图
图 | 代码 | 独有参数 |
---|---|---|
散点图 | plt.scatter(x,y) | |
折线图 | plt.plot(x,y) | |
条形图 | plt.bar(left,height) | width设置宽度;orientation=‘horizontal’默认为‘vertical,水平时plt.bar(left=0, bottom=index, width=y,height=0.5,orientation=‘horizontal’) |
横向的条形图 | plt.barh(bottom,width) | |
直方图 | plt.hist(data) | bins表示每个长方形的宽,也可传入一个数组标准柱子对应的下标;normed=True表示对数据进行标准化(纵坐标则变为频率);用orientation='horizontal’调整水平 |
双变量直方图 | plt.hist2D(x,y) | 如直方图 |
饼状图 | plt.pie(x,labels) | autopc=’%.1f%%'格式化百分比字符串;explode=[列表元素表示每个块离圆心的距离];plt.axes(aspect=1)加在前,画出的是xy轴1比1的正圆;shadow=True表示有阴影 |
箱线图 | plt.boxplot(x,labels) | sym='o’表示异常点的形状为圆形;whis异常值界限 |
画多列的条形图
left=index+bar_width
index=np.arange(4)
sales_BJ=[52,55,63,53]
sales_SH=[44,66,55,41]
bar_width=0.3
plt.bar(index,sales_BJ,bar_width,color='b')
plt.bar(index+bar_width,sales_SH,bar_width,color='r')
plt.show()
层叠图
bottom=上一列数的顶端
plt.bar(index,sales_BJ,bar_width,color='b')
plt.bar(index,sales_SH,bar_width,color='r',bottom=sales_BJ)
plt.show()
有重点的饼图
labels = 'A', 'B', 'C', 'D'
fracs = [15, 30, 45, 10]
plt.axes(aspect=1)##xy轴的比例
explode = (0, 0.2, 0, 0)
plt.pie(fracs, explode=explode, labels=labels, autopct='%.0f%%', shadow=True)
plt.show()
坐标为时间的图
- 用np.loadtxt导入数据时,添加参数converters={0:mdates.bytespdate2num(’%m/%d/%Y’)}#0表示第几列设为时间,mdates 为import matplotlib.dates as mdates
此时时间数据转化为浮点数,画图用plt.plot_date(date , y ),默认是散点图,可用linestyle=’-'调整线型
颜色和样式
color选择 | 示例 |
---|---|
八种默认缩写 | b(bllue),g(green),r(red),c(cyan),m(magenta),y(yellow),k(black),w(white) |
灰色阴影 | color=‘数字’ |
html十六进制 | color=‘#FFOOFF’ 颜色代码 |
RGB元组 | color=(1,2,3) |
maker选择 | 样式 |
---|---|
‘.’ | point |
‘,’ | pixel |
‘o’ | circle |
‘v’ | triangle_down |
‘^’ | triangle_up |
若不加**maker=**则只有点,没有线
线型 | 代码 |
---|---|
实线 | ‘-‘ |
虚线 | ‘–’ |
点划线 | ‘-.’ |
点线 | ‘:’ |
样式字符串:颜色点型线型,如‘ro–’表示红色圆点虚线
用面向对象的方式
matplotlib对象 | 简介 |
---|---|
FigureCanvas | 画布 |
Figure | 图 |
Axes | 在Figure上生成的坐标轴,实际画图的地方 |
画子图
方法一:用面向对象的方式
- fig=plt.figure() #生成一个一个Figrue实例,即画图对象,可添加Axes实例
- ax=fig.add_subplot(111) #生成Axes实例,即一个坐标轴对象
参数一:子图总函数
参数二:子图总列数
参数三:子图位置
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(1,100)
fig=plt.figure()
ax1=fig.add_subplot(221)
ax1.plot(x,x)
ax2=fig.add_subplot(223)
ax2.plot(x,-x)
ax3=fig.add_subplot(122)
ax3.plot(x,x*x)
plt.show()
方法二: 用pyplot中简单的函数画子图(可交互)
用plt.subplot(111)#参数一:子图总函数;参数二:子图总列数;参数三:子图位置
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(1,100)
plt.subplot(221)
plt.plot(x,x)
plt.subplot(223)
plt.plot(x,-x)
plt.subplot(122)
plt.plot(x,x*x)
plt.show()
生成多张图
区别于一张图生成多个子图
fig1=plt.figure()
fig2=plt.figure()
生成多个plt.figure()实例
x=np.