Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。
Matplotlib 可以用来绘制各种静态,动态,交互式的图表。
Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API
plot() 函数是绘制二维图形的最基本函数
多条曲线不指定颜色时,会自动选择不同颜色。
- import matplotlib.pyplot as plt #引入pyplot模块,并取别名plt
- input_value = [0, 1, 2, 3, 4, 5]
- squares = [0, 1, 4, 9, 16, 25]
- squares1 = [0, 2, 4, 6, 8, 10]
- plt.plot(input_value, squares, marker = 'o', linewidth=5) #linewidth决定线条的粗细
- plt.plot(input_value, squares1, marker = 'v', linewidth=1) #marker参数定义数据点的形状
- #设置图表标题,坐标轴加标签
- plt.title("Square Numbers",fontsize=24) #fontsize决定文字大小
- plt.xlabel("Value",fontsize=14) #xlabel为x轴设置标题
- plt.ylabel("Square of Value",fontsize=14) #ylabel为y轴设置标题
- #设置刻度标记大小
- plt.tick_params(axis='both',labelsize=14)
- plt.show()
'运行
以下为markerke可设置的值
fmt 参数定义了基本格式,即 '[marker][line][color]'
plt.plot(ypoints, 'o:r')
可以自定义标记的大小与颜色,使用的参数分别是:
- import matplotlib.pyplot as plt
- ypoints = [6, 2, 13, 10]
- plt.plot(ypoints, 'o:r', ms=10, mec = 'g', mfc = 'b')
- plt.show()
'运行
grid() 方法来设置图表中的网格线
参数说明:
- import matplotlib.pyplot as plt
- ypoints = [6, 2, 13, 10]
- plt.plot(ypoints, 'o:r', ms=10, mec = 'g', mfc = 'b')
- plt.grid(b=None, which='major', axis='both')
- plt.show()
subplot() 方法绘制多个子图
subplot(nrows, ncols, index, **kwargs) subplot(pos, **kwargs) subplot(**kwargs) subplot(ax)
以上函数将整个绘图区域分成 nrows 行和 ncols 列,然后从左到右,从上到下的顺序对每个子区域进行编号 1...N ,左上的子区域的编号为 1、右下的区域编号为 N,编号可以通过参数 index 来设置。
- import matplotlib.pyplot as plt
-
- #plot 1:
- xpoints = [0, 6]
- ypoints = [0, 100]
-
- plt.subplot(1, 2, 1)
- plt.plot(xpoints,ypoints)
- plt.title("plot 1")
-
- #plot 2:
- x = [1, 2, 3, 4]
- y = [1, 4, 9, 16]
-
- plt.subplot(1, 2, 2)
- plt.plot(x,y)
- plt.title("plot 2")
-
- plt.suptitle("RUNOOB subplot Test")
- plt.show()
'运行
- import matplotlib.pyplot as plt
- input_value = [0, 1, 2, 3, 4, 5]
- squares = [0, 1, 4, 9, 16, 25]
- plt.scatter(input_value, squares, s=100) #scatter可绘制点,s可决定大小
- #设置图表标题,坐标轴加标签
- plt.title("Square Numbers", fontsize=24) #fontsize决定文字大小
- plt.xlabel("Value", fontsize=14) #xlabel为x轴设置标题
- plt.ylabel("Square of Value", fontsize=14)#ylabel为y轴设置标题
- #设置刻度标记大小
- plt.tick_params(axis='both', which='major', labelsize=14)
- plt.show()
'运行
bar() 方法来绘制柱形图,垂直方向的柱形图可以使用 barh() 方法
matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)
参数说明:
x:浮点型数组,柱形图的 x 轴数据。
height:浮点型数组,柱形图的高度。
width:浮点型数组,柱形图的宽度。barh() 方法使用 height 设置
bottom:浮点型数组,底座的 y 坐标,默认 0。
align:柱形图与 x 坐标的对齐方式,'center' 以 x 位置为中心,这是默认值。 'edge':将柱形图的左边缘与 x 位置对齐。要对齐右边缘的条形,可以传递负数的宽度值及 align='edge'。
**kwargs::其他参数。
- import matplotlib.pyplot as plt
-
- x = ["A", "B", "C", "D"]
- y = [12, 22, 6, 18]
- plt.barh(x, y, height = 0.1)
- plt.show()
'运行
pyplot 中的 pie() 方法来绘制饼图
matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False, *, normalize=None, data=None)[source]
参数说明:
x:浮点型数组,表示每个扇形的面积。
explode:数组,表示各个扇形之间的间隔,默认值为0。
labels:列表,各个扇形的标签,默认值为 None。
colors:数组,表示各个扇形的颜色,默认值为 None。
autopct:设置饼图内各个扇形百分比显示格式,%d%% 整数百分比,%0.1f 一位小数, %0.1f%% 一位小数百分比, %0.2f%% 两位小数百分比。
labeldistance:标签标记的绘制位置,相对于半径的比例,默认值为 1.1,如 <1则绘制在饼图内侧。
pctdistance::类似于 labeldistance,指定 autopct 的位置刻度,默认值为 0.6。
shadow::布尔值 True 或 False,设置饼图的阴影,默认为 False,不设置阴影。
radius::设置饼图的半径,默认为 1。
startangle::起始绘制饼图的角度,默认为从 x 轴正方向逆时针画起,如设定 =90 则从 y 轴正方向画起。
counterclock:布尔值,设置指针方向,默认为 True,即逆时针,False 为顺时针。
wedgeprops :字典类型,默认值 None。参数字典传递给 wedge 对象用来画一个饼图。例如:wedgeprops={'linewidth':5} 设置 wedge 线宽为5。
textprops :字典类型,默认值为:None。传递给 text 对象的字典参数,用于设置标签(labels)和比例文字的格式。
center :浮点类型的列表,默认值:(0,0)。用于设置图标中心位置。
frame :布尔类型,默认值:False。如果是 True,绘制带有表的轴框架。
rotatelabels :布尔类型,默认为 False。如果为 True,旋转每个 label 到指定的角度。
- import matplotlib.pyplot as plt
- y = [35, 25, 25, 15]
- plt.pie(y,
- labels=['A','B','C','D'], # 设置饼图标签
- colors=["#d5695d", "#5d8ca8", "#65a479", "#a564c9"], # 设置饼图颜色
- explode=(0, 0.2, 0, 0), # 第二部分突出显示,值越大,距离中心越远
- autopct='%.2f%%', # 格式化输出百分比
- )
- plt.title("RUNOOB Pie Test")
- plt.show()
'运行
- import matplotlib.pyplot as plt
- input_value = list(range(1, 1001))
- squares = [x**2 for x in input_value]
- """
- scatter可绘制点
- c决定颜色(可使用颜色英文首字母或者全拼,也可使用rgb(rgb是0~1间的小数数组))
- edgecolors决定数据点的轮廓
- s可决定大小
- """
- plt.scatter(input_value, squares, c='r', edgecolors='none', s=10)
- #设置图表标题,坐标轴加标签
- plt.title("Square Numbers", fontsize=24) #fontsize决定文字大小
- plt.xlabel("Value", fontsize=14) #xlabel为x轴设置标题
- plt.ylabel("Square of Value", fontsize=14)#ylabel为y轴设置标题
- #设置刻度标记大小
- plt.tick_params(axis='both', which='major', labelsize=14)
- #设置坐标轴取值范围
- plt.axis([0, 1100, 0, 1100000])
- plt.show()
'运行
- import matplotlib.pyplot as plt
- input_value = list(range(1, 1001))
- squares = [x**2 for x in input_value]
- """
- 颜色隐射就是渐变色
- 将参数c设置为y轴列表,参数cmap决定哪个颜色
- """
- plt.scatter(input_value, squares, c=squares, cmap=plt.cm.Blues , edgecolors='none', s=10)
- #设置图表标题,坐标轴加标签
- plt.title("Square Numbers", fontsize=24) #fontsize决定文字大小
- plt.xlabel("Value", fontsize=14) #xlabel为x轴设置标题
- plt.ylabel("Square of Value", fontsize=14)#ylabel为y轴设置标题
- #设置刻度标记大小
- plt.tick_params(axis='both', which='major', labelsize=14)
- #设置坐标轴取值范围
- plt.axis([0, 1100, 0, 1100000])
- plt.show()
'运行
最后加以下代码即可,下载地址是当前过程文件的地址,参数就是图片名称
plt.savefig('squares.png')