matplotlib画图总结

本片博客介绍了matplotlib画图的API,API很多,只总结了部分自己用到的。开始吧

没有这个库的,pip安装一下。

首先将matplotlib中的pyplot导入,如下:

import matplotlib.pyplot as plt,所以以下的plt都是pyplot。

plt.scatter

画散点图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import matplotlib.pyplot as plt
x = list(range(1,1001))
y = [x**2 for x in x]
#s代表点的面积
#c代表颜色
plt.scatter(x,y,c="green",s=20)
#设置标题并加上轴标签
plt.title("Squares Numbers",fontsize=24)
plt.xlabel("Value",fontsize=14)
plt.xlabel("Square of Value",fontsize=14)
#设置刻度标记的大小
plt.tick_params(axis='both',which='major',labelsize=14)
#设置每个坐标的取值范围
plt.axis([0,1100,0,1100000])
plt.show()

上面的代码运行后,是一条线。那是因为点太多了。绘制很多点的时候,轮廓会连在一起。要删除数据点的轮廓可用scatter,传递参数edgecolor=”none”

模块pyplot内置了一组颜色映射,要使用这些颜色映射,你需要告诉pyplot该如何设置数据集中每个点的颜色。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import matplotlib.pyplot as plt
x = list(range(1,1001))
y = [x**2 for x in x]
#s代表点的面积
#cmap设置颜色映射
plt.scatter(x,y,s=20,c=y,cmap=plt.cm.Greens)
#设置标题并加上轴标签
plt.title("Squares Numbers",fontsize=24)
plt.xlabel("Value",fontsize=14)
plt.xlabel("Square of Value",fontsize=14)
#设置刻度标记的大小
plt.tick_params(axis='both',which='major',labelsize=14)
#设置每个坐标的取值范围
plt.axis([0,1100,0,1100000])
plt.show()

保存散点图:savefig

保存图片之前,一定要把plt.show()注释掉,否则会保存一张空白的图片

1
2
#plt.show()
plt.savefig("save.jpg",bbox_inches="tight")

plt.bar

画柱状图,默认是竖直条形图。

1
2
3
4
5
6
7
import matplotlib.pyplot as plt
import numpy as np
y = [20, 10, 30, 25, 15]
x = np.arange(5)
p1 = plt.bar(x, height=y, width=0.5, )
# 展示图形
plt.show()

水平条形图:需要把orientation改为horizontal,然后x与y的数据交换

1
2
3
4
5
6
7
8
9
import matplotlib.pyplot as plt
import numpy as np
x = [20, 10, 30, 25, 15]
y = np.arange(5)
# x= 起始位置,bottom= 水平条的底部(左侧), y轴, height:水平条的宽度
#width:水平条的长度
p1 = plt.bar(x=0, bottom=y, height=0.5, width=x, orientation="horizontal")
# 展示图形
plt.show()

plt.plot(x,y,color=’red’,linewidth=2.5,linestyle=’-‘)

画线,也可以用来画折线图。x是横坐标的值。y是纵坐标的值。color参数设置曲线颜色,linewidth设置曲线宽度,linestyle设置曲线风格。

linestyle的可选参数:

‘-‘ solid line style
‘—‘ dashed line style
‘-.’ dash-dot line style
‘:’ dotted line style

plt.figure()

自定义画布大小,画图之前首先设置figure对象,此函数相当于设置一块自定义大小的画布,使得后面的图形输出在这块规定了大小的画布上,其中参数figsize设置画布大小。

figure语法说明

figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)

num:图像编号或名称,数字为编号 ,字符串为名称

figsize:指定figure的宽和高,单位为英寸;

dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80

facecolor:背景颜色

edgecolor:边框颜色

frameon:是否显示边框

plt.xticks()

设置x轴刻度的表现方式

plt.yticks()

设置y轴刻度的表现方式

plt.xlim()

设置x轴刻度的取值范围

plt.ylim()

设置y轴刻度的取值范围

plt.text(1, 2, “I’m a text”)

前两个参数表示文本坐标, 第三个参数为要添加的文本

plt.legend()

函数实现了图例功能, 他有两个参数, 第一个为样式对象, 第二个为描述字符,都可以为空

plt.xlabel()

添加x轴名字

plt.ylabel()

添加y轴名字

plt.tight_layout()

tight_layout自动调整subplot(s)参数,以便subplot(s)适应图形区域

plt.subplot()

设置画布划分以及图像在画布上输出的位置,将figure设置的画布大小分成几个部分,参数‘221’表示2(row)x2(colu),即将画布分成2x2,两行两列的4块区域,1表示选择图形输出的区域在第一块,图形输出区域参数必须在“行x列”范围

plt.subplots()

subplots(nrows,ncols,sharex,sharey,squeeze,subplot_kw,gridspec_kw,**fig_kw) :创建画布和子图

1、nrows,ncols表示将画布分割成几行几列。shares,sharey表示坐标轴的属性是否相同,可选的参数:True、False、row、col。默认值为False。

2、 squeeze bool

a.默认参数为True:额外的维度从返回的Axes(轴)对象中挤出,对于N1或1N个子图,返回一个1维数组,对于N*M,N>1和M>1返回一个2维数组。

b.为False,不进行挤压操作:返回一个元素为Axes实例的2维数组,即使它最终是1x1。

3、subplot_kw:字典类型,可选参数。把字典的关键字传递给add_subplot()来创建每个子图。

4、gridspec_kw:字典类型,可选参数。把字典的关键字传递给GridSpec构造函数创建子图放在网格里(grid)。

5、**fig_kw:把所有详细的关键字参数传给figure()函数。

plt.grid()

是否开启方格,True为开,False为不显示。默认为False

plt.gca()

获取当前的子图

plt.xcale()

改变x轴的比例。pyplot不仅支持线性轴刻度,还支持对数和logit刻度。如果数据跨越许多数量级,则通常使用此方法

plt.xcale(“logit”),还有log、symmlog等选择。还可以添加自己的比例。

plt.yscale()

改变y轴的比例。用法同plt.xcale一样

随便写了个例子,其他具体的用法还是要自己去练习。

1
2
3
4
5
6
7
8
9
10
11
12
import numpy as np
import matplotlib.pyplot as plt
plt.scatter([1,3,9],[5,8,2], label="Example one",color="red",s=25,marker="o")
plt.plot([2,4,6,8,10],[8,6,2,5,6], label="Example two", color='g')
plt.legend()
plt.xticks([1,10])
plt.yticks([1,15])
plt.xlabel('bar number')
plt.ylabel('bar height')
plt.title('test')
plt.grid(True)
plt.show()
----本文结束,感谢您的阅读。如有错,请指正。----
大哥大嫂过年好!支持我一下呗
0%