您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > Python数据可视化编程实践-绘制图表
Python数据可视化编程实践-绘制图表准备工作打开JupyterNotebook,导入需要的包,并配置好图片交互和中文显示环境:importpandasaspdimportnumpyasnpimportsysreload(sys)sys.setdefaultencoding('utf-8')importmatplotlibasmplimportmatplotlib.pyplotaspltimportmatplotlib.cmascm%matplotlibinlineplt.rcParams['font.sans-serif']=['SimHei']#用来正常显示中文标签plt.rcParams['axes.unicode_minus']=False#用来正常显示负号定义图表类型——柱状图、线形图和堆积柱状图调用figure()方法,创建一个新的图表,接下来的绘图操作都在此图表中进行,参数figsize=(12,6)表示该图表的大小。调用subplot(231)方法把图表分割成2行3列的网格,1表示图形的标号。x=[1,2,3,4]y=[5,4,3,2]plt.figure(figsize=(12,6))plt.subplot(231)plt.plot(x,y)#折线图plt.subplot(232)plt.bar(x,y)#垂直柱状图plt.subplot(233)plt.barh(x,y)#水平柱状图plt.subplot(234)plt.bar(x,y)y1=[7,8,5,3]plt.bar(x,y1,bottom=y,color='r')#堆叠柱状图设置参数bottom=yplt.subplot(235)plt.boxplot(x)#箱线图plt.subplot(236)plt.scatter(x,y)#散点图plt.show()具体解释下箱线图中的几个最重要的显示选项。首先,我们可以添加从箱体延伸出来的箱须来展示数据集合的整个范围。箱体和箱须主要用于表现一个或多个数据集合中数据的编号,容易对数据进行对比而且易于理解。在同一个箱线图中可以呈现5种数据。最小值:数据集合的最小值。第二四分位数:其以下为数据集合中较低的25%数据。中值:数据集合的中值第三四分位数:其以上为数据集合中较高的25%数据。最大值:给定数据集合的最大值。dataset=[113,115,119,121,124,124,125,126,126,126,127,127,128,129,130,130,131,132,133,136]plt.figure(figsize=(10,6))plt.subplot(121)plt.boxplot(dataset,vert=False)plt.subplot(122)plt.hist(dataset)plt.show()我们用同一个数据集合来绘制箱线图和直方图,观察两种图表在数据展现上的差异。左图呈现了五个统计数据,右图展示了数据集合在给定范围内的分组情况。简单的正弦图和余弦图我们对从-Pi到Pi之间具有相同线性距离的256个点来计算正弦值和余弦值,然后把sin(x)值和cos(x)值在用以图表中绘制出来。x=np.linspace(-np.pi,np.pi,256,endpoint=True)y=np.cos(x)y1=np.sin(x)plt.figure(figsize=(10,6))plt.plot(x,y)plt.plot(x,y1)plt.title(Functions$\sin$and$\cos$)#设置图标题plt.xlim(-3.0,3.0)#设置x轴范围plt.ylim(-1.0,1.0)#设置y轴范围plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r'$-\pi$',r'$-\pi/2$',r'$0$',r'$+\pi/2$',r'$+\pi$'])#用希腊字母标注x轴标签plt.yticks([-1,0,+1],[r'$-1$',r'$0$',r'$+1$'])plt.show()设置坐标轴长度和范围如果不实用axis()或者其他参数设置,matplotlib会自动使用最小值,刚好可以让我们在一个图中看到所有的数据点。调用autoscale()方法,会以坐标轴的最佳大小适应数据的显示。axis()里面的值分别表示坐标轴上xmin、xmax、ymin、ymaxaxhline()表示绘制了一条y=0的水平线axvline()表示绘制了一条x=0的垂直线axhline(4)表示绘制了一条y=4的水平线l=[-1,1,-10,10]plt.axis(l)plt.axhline()plt.axvline()plt.axhline(4)设置图表的线型、属性和格式化字符串常见的线条样式:-直线--虚线-.-.形式:细小虚线常见的点样式:s--方形h--六角形H--六角形*--星号+--加好x--x型d--菱形D--菱形p--五角形常见的颜色样式:c-cyan--青色r-red--红色m-magente--品红g-green--绿色b-blue--蓝色y-yellow--黄色k-black--黑色w-white--白色#plot(x轴数据,y轴数据,展现形式)x=[1,2,3,4,8]y=[5,7,2,1,5]plt.plot(x,y,'-',color='g',linewidth=0.8)plt.plot(x,y,'*',color='r')#散点图plt.show()设置刻度、刻度标签和网格刻度是图形的一部分,由刻度定位器(指定刻度所在的位置)和刻度格式器(指定刻度显示的样式)组成。刻度有主刻度和次刻度,默认次刻度不显示。locator_params()方法控制刻度定位器,可以控制刻度的数目。plt.figure(figsize=(10,6))#获取当前坐标ax=plt.gca()#设置紧凑视图,设置刻度间隔最大为10ax.locator_params(tight=True,nbins=10)#生成100个正态分布值ax.plot(np.random.normal(10,.1,100))plt.show()使用dates模块的一个例子来说明刻度格式器的配置。刻度格式器规定了值的显示方式。importdatetimefig=plt.figure(figsize=(10,6))#获取当前的坐标轴ax=plt.gca()#设置一些日期区间start=datetime.datetime(2013,01,01)stop=datetime.datetime(2013,12,31)delta=datetime.timedelta(days=1)#转换日期dates=mpl.dates.drange(start,stop,delta)#产生一些随机值values=np.random.rand(len(dates))ax=plt.gca()#用日期值画图ax.plot_date(dates,values,linestyle='-',marker='')#指定格式date_format=mpl.dates.DateFormatter('%Y-%m-%d')#应用格式ax.xaxis.set_major_formatter(date_format)#自动格式日期标签fig.autofmt_xdate()plt.show()添加图例和注解图例和注解清洗连贯地解释了数据图表的内容。通过给给个plot添加一个关于所显示数据的简短描述,能让观察者更容易理解。在每个plot中指定了一个字符串标签(label),这样legend()会把它们添加到图例框中。通过loc参数确定图例框的位置。annotate()可以为xy坐标位置的数据点添加字符串描述。通过设置xycoord='data',可以指定注解和数据使用相同的坐标系,注解文本的起始位置通过xytext指定。箭头由xytext指向xy坐标位置。arrowstyle指定了箭头风格。plt.figure(figsize=(10,6))#生成不同正态分布值x1=np.random.normal(30,3,100)x2=np.random.normal(20,2,100)x3=np.random.normal(10,3,100)#在同张画布里画3条线plt.plot(x1,label='plot')plt.plot(x2,label='2ndplot')plt.plot(x3,label='3ndplot')#生成图例框plt.legend(bbox_to_anchor=(0.,1.02,1.,.102),loc=3,ncol=3,mode=expand,borderaxespad=0.)#注解重要值plt.annotate(Importantvalue:(55,20),(55,20),xycoords='data',xytext=(5,38),arrowprops=dict(arrowstyle='-'))plt.show()移动轴线到图中央轴线定义了数据区域的边界,把坐标轴刻度标记连接起来。一共有四个轴线,可以把它们放置在任何位置。默认情况下,它们被放置在坐标轴的边界。为了把轴线移到图中央,需要把其中两个轴线隐藏起来(设置color为none)。然后,移动另外两个到坐标(0,0)。坐标为数据空间坐标。x=np.linspace(-np.pi,np.pi,500,endpoint=True)y=np.sin(x)plt.plot(x,y)ax=plt.gca()ax.spines['right'].set_color('none')#隐藏右边的轴线ax.spines['top'].set_color('none')#隐藏顶端的轴线ax.spines['bottom'].set_position(('data',0))#移动底端的轴线到(0,0)ax.spines['left'].set_position(('data',0))#移动左端的轴线到(0,0)ax.xaxis.set_ticks_position('bottom')#移动底端的刻度到x轴ax.yaxis.set_ticks_position('left')#移动左侧的刻度到x轴plt.show()绘制直方图直方图被用于可视化数据的分布估计。表示一定间隔下数据点频率的垂直矩阵称为bin。bin以固定的间隔创建,因此直方图的总面积等于数据点的数量。直方图可以显示数据的相对频率,而不是使用数据的绝对值。在这种情况下,总面积等于1。mu=100sigma=15x=np.random.normal(mu,sigma,10000)ax=plt.gca()ax.hist(x,bins=35,color='r',normed=True)#normed=True,直方图的值将进行归一化处理,形成概率密度。默认值为Falseax.set_xlabel('值')ax.set_ylabel('频率')ax.set_title(r'$\mathrm{Histogram:}\\mu=%d,\\sigma=%d$'%(mu,sigma))plt.show()绘制误差条形图误差条可以用来可视化数据集中的测量不确定度或者指出错误。经常使用到的参数:xerr和yerr:用于在柱状图上生成误差条。width:给定误差条的宽度,默认值是0.8.bottom:如果指定了bottom,其值会加到高度中,默认值为None。edgecolor:给定误差条边界颜色。ecolor:指定误差条的颜色。linewidth:误差条边界宽度,可以设为None(默认值)和0(此时误差条边界将不显示出来)orientation:有vertical和horizontal两个值。x=np.arange(0,10,1)y=np.log(x)xe=0.1*np.abs(np.random.randn(len(y)))plt.bar(x,
本文标题:Python数据可视化编程实践-绘制图表
链接地址:https://www.777doc.com/doc-4209891 .html