简单图形绘制
import matplotlib.pyplot as plt
plt.plot([3,1,4,5,2])
plt.ylabel("grade") # y轴标签
plt.savefig("test_1",dpi=600) # 保存图片
plt.show() #显示
"""
plt.plot()只有一个输入列表或数组时,参数被当作Y轴,X轴以索引自动生成;
plt.savefig()将输出图形存储为文件,默认PNG格式,可以通过dpi修改输出质量。
"""
import matplotlib.pyplot as plt
plt.plot([0,2,4,6,8],[3,1,4,5,2])
plt.ylabel("grade") # y轴标签
plt.axis([0,10,0,6]) # x,y轴范围
plt.savefig("test_2",dpi=600)
plt.show()
'''
plt.plot(x,y)当有两个以上参数时,按照X轴和Y轴顺序绘制数据点;
可使用numpy的数组给x赋值,用数组为参数的函数为y赋值
'''
import matplotlib.pyplot as plt
import numpy as np
func = np.poly1d(np.array([1,2,3,4]).astype(float))
x = np.linspace(-10,10,30)
y = func(x)
plt.plot(x,y)
plt.ylabel("y(x)") # y轴标签
plt.xlabel("x") # x轴标签
plt.show()
1.创建画布:构建一张空白的画布,并可以选择是否将整个画布划分为多个部分,方便在同一幅图上绘制多个图形的情况。最简单的绘图可以省略第一部分,而后直接在默认的画布上进行图形绘制
figure()函数创建一个全局绘图区域,并成为当前的绘图对象,figsize参数可以指定绘图区域的宽度和高度,单位为英寸。
2.创建子图:在全局绘图区域中创建一个分区体系,并定位到一个子绘图区域
主要函数:plt.subplot(nrows, ncols, plot_number) 如:plt.subplot(3,2,4)
添加画布内容
是绘图的主体部分。其中添加标题,坐标轴名称,绘制图形等步骤是并列的,没有先后顺序,可以先绘制图形,也可以先添加各类标签。但是添加图例一定要在绘制图形之后。
plt.title 在当前图形中添加标题,可以指定标题的名称、位置、颜色、字体大小等参数。
plt.xlabel 在当前图形中添加x轴名称,可以指定位置、颜色、字体大小等参数。
plt.ylabel 在当前图形中添加y轴名称,可以指定位置、颜色、字体大小等参数。
plt.xlim 指定当前图形x轴的范围,只能确定一个数值区间,而无法使用字符串标识。
plt.ylim 指定当前图形y轴的范围,只能确定一个数值区间,而无法使用字符串标识。
plt.xticks 指定x轴刻度的数目与取值。
plt.yticks 指定y轴刻度的数目与取值。
plt.legend 指定当前图形的图例,可以指定图例的大小、位置、标签。
plt.savefig 保存绘制的图片,可以指定图片的分辨率、边缘的颜色等参数。
plt.show 在本机显示图形。
格式:plt.plot(x, y, format_string, **kwargs)
参数:
x : X轴数据,列表或数组,可选
y : Y轴数据,列表或数组
format_string: 控制曲线的格式字符串,可选
**kwargs : 第二组或更多(x,y,format_string)
当绘制多条曲线时,各条曲线的x不能省略
import matplotlib.pyplot as plt
import numpy as np
a = np.arange(0,5,0.2)
plt.plot(a,a*1.5,a,a*2,a,a*3.5,a,a*4.5)
plt.show()
format_string: 控制曲线的格式字符串,可选
由颜色字符、风格字符和标记字符组成
颜色字符、风格字符和标记字符可以组合使用
**kwargs : 第二组或更多(x,y,format_string)
color : 控制颜色, color=‘green’
linestyle : 线条风格, linestyle=‘dashed’
marker : 标记风格, marker=‘o’
markerfacecolor: 标记颜色, markerfacecolor=‘blue’
markersize : 标记尺寸, markersize=20
pyplot并不默认支持中文显示,有两种方法 可解决这一问题
方法一:需要rcParams修改字体实现
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
a = np.arange(0, 5, 0.01)
matplotlib.rcParams['font.family'] = 'STsong'
matplotlib.rcParams['font.style'] = 'normal'
matplotlib.rcParams['font.size'] = 12
plt.title('余弦函数$y=cos(2\pi x)$')
plt.xlabel('横轴:时间')
plt.ylabel('纵轴:振幅')
plt.plot(a, np.cos(2 * np.pi * a), 'r--')
plt.show()
方法二:
在有中文输出的地方,增加一个属性:fontproperties
import numpy as np
import matplotlib.pyplot as plt
a = np.arange(0, 5, 0.01)
plt.xlabel('横轴:时间', fontproperties='SimHei', fontsize=16)
plt.ylabel('纵轴:振幅', fontproperties='SimHei', fontsize=16)
plt.plot(a, np.cos(2 * np.pi * a), 'r--')
plt.show()
plt.text(2,1,r'$\mu =200$',fontsize=15) # 在坐标(2,1)上添加\mu =200
plt.annotate(r'$\mu =180$',xy=(2,1),xytext=(3,1.5),arrowprops=dict(facecolor='green',shrink=0.1,width=2))
1.散点图(scatter diagram)又称为散点分布图,是以一个特征为横坐标,另一个特征为纵坐标,利用坐标点(散点)的分布形态反映特征间的统计关系的一种图形。
通常用于比较跨类别的数据
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, alpha=None, **kwargs)
参数名称 说明
x,y 接收array。表示x轴和y轴对应的数据。无默认。
s 接收数值或者一维的array。指定点的大小,若传入一维array则表示每个点的大小。默认为None。
c 接收颜色或者一维的array。指定点的颜色,若传入一维array则表示每个点的颜色。默认为None
marker 接收特定string。表示绘制的点的类型。默认为None。
alpha 接收0-1的小数。表示点的透明度。默认为None。
2.折线图(line chart)是一种将数据点按照顺序连接起来的图形。折线图的主要功能是查看因变量y随着自变量x改变的趋势,最适合用于显示随时间(根据常用比例设置)而变化的连续数据。
plt.plot(x, y, format_string, **kwargs)
3.饼图
饼图可以比较清楚地反映出部分与部分、部分与整体之间的比例关系,易于显示每组数据相对于总数的大小,而且显现方式直观
pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, … )
import numpy as np
import matplotlib.pyplot as plt
labels='Frogs','Hogs','Dogs','Logs'
sizes=[35,30,45,10]
explode=(0,0.1,0,0)
plt.pie(sizes,explode=explode,labels=labels,shadow=False,autopct="%1.1f%%",startangle=90)
plt.axis("equal")
plt.show()
4.直方图(Histogram)
直方图可以比较直观地看出产品质量特性的分布状态,便于判断其总体质量分布情况。
pyplot.bar(left,height,width = 0.8,bottom = None,hold = None,data = None,** kwargs )
pyplot.hist(x, bins=None, range=None, normed=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, hold=None, data=None, **kwargs)
left 接收array。表示x轴数据。无默认。
height 接收array。表示x轴所代表数据的数量。无默认。
width 接收0-1之间的float。指定直方图宽度。默认为0.8。
color 接收特定string或者包含颜色字符串的array。表示直方图颜色。默认为None。
5.箱线图
箱线图利用数据中的五个统计量(最小值、下四分位数、中位数、上四分位数和最大值)来描述数据,它也可以粗略地看出数据是否具有对称性、分布的分散程度等信息,特别可以用于对几个样本的比较。
pyplot.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None,meanline=None, labels=None, … )
x 接收array。表示用于绘制箱线图的数据。无默认。 positions 接收array。表示图形位置。默认为None。
notch 接收boolean。表示中间箱体是否有缺口。默认为None。 widths 接收scalar或者array。表示每个箱体的宽度。默认为None。
sym 接收特定sting。指定异常点形状。默认为None。 labels 接收array。指定每一个箱线图的标签。默认为None。
vert 接收boolean。表示图形是横向纵向或者横向。默认为None。 meanline 接收boolean。表示是否显示均值线。默认为False。