VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > python入门教程 >
  • matplotlib 基础知识汇总 - 基于 Python 的图表绘图系统

一、Matplotlib基础知识
Matplotlib中的基本图表包括的元素
 
x轴和y轴 axis
水平和垂直的轴线
x轴和y轴刻度 tick
刻度标示坐标轴的分隔,包括最小刻度和最大刻度
x轴和y轴刻度标签 tick label
表示特定坐标轴的值
绘图区域(坐标系) axes
实际绘图的区域
坐标系标题 title
实际绘图的区域
轴标签 xlabel ylabel
实际绘图的区域
导入模块
import matplotlib.pyplot as plt
包含单条曲线的图
注意:y,x轴的值必须为数字
 
x=[1,2,3,4,5]
y=[2,4,6,8,10]
 
plt.plot(x,y)
 
 
绘制抛物线
 
x = np.linspace(-np.pi,np.pi,num=10)  # 使用np.pi
y = x**2
plt.plot(x,y)
 
 
绘制正弦曲线图
 
x = x
y = np.sin(x)
plt.plot(x,y)
 
 
包含多个曲线的图
1、连续调用多次plot函数
 
# 可以只调多次plot
plt.plot(x,y)
plt.plot(x+2,y-1)
 
 
2、也可以在一个plot函数中传入多对X,Y值,在一个图中绘制多个曲线
 
plt.plot(x,y,x-3,y+5)  # 也可以只调一次plot,传入多值
 
 
将多个曲线图绘制在一个table区域中:对象形式创建表图
a=plt.subplot(row,col,loc) 创建曲线图
a.plot(x,y) 绘制曲线图
复制代码
# 前两个参数表示绘制2*2的表格, 第三个参数表示图的位置(第几个)
plt.subplot(221)
plt.plot(x,y)
 
plt.subplot(2,2,2)
plt.plot(x+1,y-3)
 
plt.subplot(2,2,3)
plt.plot(x+5,y+2)
 
plt.subplot(2,2,4)
plt.plot(x-1,y-5)
复制代码
 
 
参数:
 
- axis
- color:支持十六进制颜色
- linestyle: --  -.  :
- alpha
 
坐标轴界限
axis方法:设置x,y轴刻度值的范围
plt.axis([xmin,xmax,ymin,ymax])
 
# 传入想要修改刻度的范围,值不会变
plt.plot(x,y)
plt.axis([-6,6,-2,2])
 
plt.axis('off')
关闭坐标轴
 
# plt.axis('off')  # 不显示刻度
设置画布比例:plt.figure(figsize=(a,b)) a:x刻度比例 b:y刻度比例 (2:1)表示x刻度显示为y刻度显示的2倍
 
plt.figure(figsize=(10,5))
plt.plot(x,y)
 
 
坐标轴标签
s 标签内容
color 标签颜色
fontsize 字体大小
rotation 旋转角度
plt的xlabel方法和ylabel方法 title方法
# 指定x、y和坐标系的标识
plt.plot(x,y)
plt.xlabel('xxx')
plt.ylabel('yyy')
plt.title('ttt')
 
 
图例
legend方法
两种传参方法:
 
分别在plot函数中增加label参数,再调用plt.legend()方法显示
直接在legend方法中传入字符串列表
# 调用legend方法使label生效
plt.plot(x,y,label='AAA')
plt.plot(x+3,y-4,label='BBB')
plt.legend(ncol=1,loc=3)  # ncol表示图例显示列数, loc表示位置
 
 
legend的参数
- loc参数
loc参数用于设置图例标签的位置,一般在legend函数内
matplotlib已经预定义好几种数字表示的位置
 
字符串 数值 字符串 数值
best 0 center left 6
upper right 1 center right 7
upper left 2 lower center 8
lower left 3 upper center 9
lower right 4 center 10
right 5
 - ncol参数
ncol控制图例中有几列,在legend中设置ncol
 
保存图片
使用figure对象的savefig函数来保存图片
fig = plt.figure()---必须放置在绘图操作之前
 
figure.savefig的参数选项
 
filename
含有文件路径的字符串或Python的文件型对象。图像格式由文件扩展名推断得出,例如,.pdf推断出PDF,.png推断出PNG (“png”、“pdf”、“svg”、“ps”、“eps”……)
dpi
图像分辨率(每英寸点数),默认为100
facecolor ,打开保存图片查看 图像的背景色,默认为“w”(白色)
复制代码
# 第1步实例化对象
fig = plt.figure()
 
# 第2步绘图
plt.plot(x,y,label='AAA')
plt.plot(x+3,y-4,label='BBB')
plt.legend(ncol=1,loc=3)
 
# 第3步使用savefig保存图片,dpi为图片分辨率
fig.savefig('./123.png',dpi=500)
复制代码
 
 
设置plot的风格和样式
plot语句中支持除X,Y以外的参数,以字符串形式存在,来控制颜色、线型、点型等要素,语法形式为:
plt.plot(X, Y, 'format', ...)
 
颜色
参数color或c
 
plt.plot(x,y,c='red',alpha=0.5)  # alpha为透明度
 
颜色值的方式
别名
color='r'
合法的HTML颜色名
color = 'red'
颜色 别名 HTML颜色名 颜色 别名 HTML颜色名
蓝色 b blue 绿色 g green
红色 r red 黄色 y yellow
青色 c cyan 黑色 k black
洋红色 m magenta 白色 w white
HTML十六进制字符串
color = '#eeefff'
归一化到[0, 1]的RGB元组
color = (0.3, 0.3, 0.4)
透明度
alpha参数
 
线型
参数linestyle或ls
 
 
线条风格 描述 线条风格 描述
'-' 实线 ':' 虚线
'--' 破折线 'steps' 阶梯线
'-.' 点划线 'None' / ',' 什么都不画
plt.plot(x,y,c='red',alpha=0.5,ls='steps')
 
线宽
linewidth或lw参数
 
plt.plot(x,y,c='red',alpha=0.5,ls='steps',lw=5)
 
 
点型
marker 设置点形
markersize 设置点形大小
标记 描述 标记 描述
's' 正方形 'p' 五边形
'h' 六边形1 'H' 六边形2
'8' 八边形
标记 描述 标记 描述
'.' 'x' X
'*' 星号 '+' 加号
',' 像素
标记 描述 标记 描述
'o' 圆圈 'D' 菱形
'd' 小菱形 '','None',' ',None
标记 描述 标记 描述
'1' 一角朝下的三脚架 '3' 一角朝左的三脚架
'2' 一角朝上的三脚架 '4' 一角朝右的三脚架
plt.plot(x,y,c='red',alpha=0.5,lw=5,marker='h',markersize=10)
 
 
复制代码
# 绘制线      plt.plot(x1,y1,x2,y2)
# 网格线      plt.grid(True)  axes.grid(color,ls,lw,alpha)
# 获取坐标系  plt.subplot(n1,n2,n3)
# 坐标轴标签  plt.xlabel() plt.ylabel()
# 坐标系标题  plt.title()
# 图例        plt.legend([names],ncol=2,loc=1)  plt.plot(label='name')
# 线风格      --  -. : None  step
# 图片保存    figure.savefig()
# 点的设置    marker markersize markerfacecolor markeredgecolor\width
# 坐标轴刻度  plt.xticks(刻度列表,刻度标签列表) plt.yticks()
#             axes.set_xticks(刻度列表) axes.set_xticklabels(刻度标签列表)
复制代码
二、2D图形
直方图
是一个特殊的柱状图,又叫做密度图。
【直方图的参数只有一个x!!!不像条形图需要传入x,y】
 
plt.hist()的参数
 
bins
直方图的柱数,可选项,默认为10
color
指定直方图的颜色。可以是单一颜色值或颜色的序列。如果指定了多个数据集合,例如DataFrame对象,颜色序列将会设置为相同的顺序。如果未指定,将会使用一个默认的线条颜色
orientation
通过设置orientation为horizontal创建水平直方图。默认值为vertical
salary = np.array([12345,10000,15000,18000,20000,15555,10050,19999,12000,12500])
# qu = [10000,12000,15000,18000,20000]  # 表示区间
plt.hist(salary)
# 可以传入qu设置柱子数量,还可以加上参数bins=5表示5根柱和rwidth设置柱宽,有的柱子没有柱高就不显示
 
 
lst = [1,1,4,5,6,7,8,8,5,5]
plt.hist(lst)
# 返回第一组numpy数组为密度值10个,第二numpy数组表示11个范围(例1.7-2.4表示一个密度值范围)
返回值 :
 
1: 直方图向量,是否归一化由参数normed设定
 
2: 返回各个bin的区间范围
 
3: 返回每个bin里面包含的数据,是一个list
 
条形图:plt.bar()
参数:第一个参数是索引。第二个参数是数据值。第三个参数是条形的宽度
-【条形图有两个参数x,y】
 
width 纵向设置条形宽度
height 横向设置条形高度
 
bar() 纵向显示
 
barh() 横向显示
x = [1,2,3,4,5]
y = [6,7,8,9,10]
 
plt.barh(x,y)
 
 
饼图
【饼图也只有一个参数x】
 
pie()
饼图适合展示各部分占总体的比例,条形图适合比较各部分的大小
 
 
饼图阴影、分裂等属性设置
 
复制代码
# labels参数设置每一块的标签;
# labeldistance参数设置标签距离圆心的距离(比例值)
# autopct参数设置比例值小数保留位(%.3f%%);
# pctdistance参数设置比例值文字距离圆心的距离
# explode参数设置每一块顶点距圆心的长度(比例值,列表);
# colors参数设置每一块的颜色(列表);
# shadow参数为布尔值,设置是否绘制阴影
# startangle参数设置饼图起始角度
复制代码
arr = [0.2,0.3,0.1,0.2]
plt.pie(arr,labels=['a','b','c','d'])
 
 
复制代码
arr=[11,22,31,15]
plt.pie(arr,labels=['a','b','c','d'])
 
# labeldistance参数设置标签距离圆心的距离(比例值)
arr=[11,22,31,15]
plt.pie(arr,labels=['a','b','c','d'],labeldistance=0.3)
 
# autopct参数设置比例值小数保留位(%.3f%%);
arr=[11,22,31,15]
plt.pie(arr,labels=['a','b','c','d'],labeldistance=0.3,autopct='%.6f%%')
 
# explode参数设置每一块顶点距圆心的长度(比例值,列表), shadow表示阴影;
arr=[11,22,31,15]
plt.pie(arr,labels=['a','b','c','d'],labeldistance=0.3,shadow=True,explode=[0.2,0.3,0.2,0.4])
 
# startangle参数设置饼图起始角度
arr=[11,22,31,15]
plt.pie(arr,labels=['a','b','c','d'],startangle=50)
复制代码
%m.nf m 占位 n 小数点后保留几位 f 是以float格式输出
 
散点图:因变量随自变量而变化的大致趋势
【散点图需要两个参数x,y,但此时x不是表示x轴的刻度,而是每个点的横坐标!】
 
scatter()
 
# 通过散点图可以找出这两组数据之前存在的规律
x = [33,35,34,31,36]
y = [100,200,150,166,177]
 
plt.scatter(x,y)
plt.scatter(x,y,marker='d',c="rbgy") 设置不同的散点颜色
 
x = np.linspace(10,20,num=30)
y = np.random.randint(10,20,size=(30,))
 
plt.scatter(x,y,c='r')  # 使用c参数设置颜色
 
出  处:https://www.cnblogs.com/aitree/p/14326917.html

相关教程