Python大数据可视化编程实践绘制图表.docx

上传人:b****6 文档编号:16720427 上传时间:2023-07-16 格式:DOCX 页数:17 大小:1.10MB
下载 相关 举报
Python大数据可视化编程实践绘制图表.docx_第1页
第1页 / 共17页
Python大数据可视化编程实践绘制图表.docx_第2页
第2页 / 共17页
Python大数据可视化编程实践绘制图表.docx_第3页
第3页 / 共17页
Python大数据可视化编程实践绘制图表.docx_第4页
第4页 / 共17页
Python大数据可视化编程实践绘制图表.docx_第5页
第5页 / 共17页
Python大数据可视化编程实践绘制图表.docx_第6页
第6页 / 共17页
Python大数据可视化编程实践绘制图表.docx_第7页
第7页 / 共17页
Python大数据可视化编程实践绘制图表.docx_第8页
第8页 / 共17页
Python大数据可视化编程实践绘制图表.docx_第9页
第9页 / 共17页
Python大数据可视化编程实践绘制图表.docx_第10页
第10页 / 共17页
Python大数据可视化编程实践绘制图表.docx_第11页
第11页 / 共17页
Python大数据可视化编程实践绘制图表.docx_第12页
第12页 / 共17页
Python大数据可视化编程实践绘制图表.docx_第13页
第13页 / 共17页
Python大数据可视化编程实践绘制图表.docx_第14页
第14页 / 共17页
Python大数据可视化编程实践绘制图表.docx_第15页
第15页 / 共17页
Python大数据可视化编程实践绘制图表.docx_第16页
第16页 / 共17页
Python大数据可视化编程实践绘制图表.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Python大数据可视化编程实践绘制图表.docx

《Python大数据可视化编程实践绘制图表.docx》由会员分享,可在线阅读,更多相关《Python大数据可视化编程实践绘制图表.docx(17页珍藏版)》请在冰点文库上搜索。

Python大数据可视化编程实践绘制图表.docx

Python大数据可视化编程实践绘制图表

Python数据可视化编程实践-绘制图表

准备工作

打开JupyterNotebook,导入需要的包,并配置好图片交互和中文显示环境:

importpandasaspd

importnumpyasnp

importsys

reload(sys)

sys.setdefaultencoding('utf-8')

importmatplotlibasmpl

importmatplotlib.pyplotasplt

importmatplotlib.cmascm

%matplotlibinline

plt.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=y

plt.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、ymax

axhline()表示绘制了一条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()

#设置紧凑视图,设置刻度间隔最大为10

ax.locator_params(tight=True,nbins=10)

#生成100个正态分布值

ax.plot(np.random.normal(10,.1,100))

plt.show()

使用dates模块的一个例子来说明刻度格式器的配置。

刻度格式器规定了值的显示方式。

importdatetime

fig=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=100

sigma=15

x=np.random.normal(mu,sigma,10000)

ax=plt.gca()

ax.hist(x,bins=35,color='r',normed=True)#normed=True,直方图的值将进行归一化处理,形成概率密度。

默认值为False

ax.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,y,yerr=xe,width=0.4,align='center',ecolor='r',color='cyan',label='experiment#1')

plt.xlabel('#measurement')

plt.ylabel('Measuredvalues')

plt.title('Measurements')

plt.legend(loc='upperleft')

plt.show()

绘制饼图

饼图显示的数据集合加起来必须等于100%,否则它就是无意义的、无效的。

饼图描述数值的比例关系,其中每个扇区的弧长大小为其所表示的数量的比例。

饼图的缺点:

1.难以对数量进行比较。

2.以特定角度的方式和一定颜色的扇形展示数据,会使我们的感觉有倾向性,从而影响我们对于所呈现数据得到的结论。

plt.figure(figsize=(6,6))

ax=plt.axes([0.1,0.1,0.8,0.8])

labels='Spring','Summer','Autumn','Winter'

#饼图的每部分定义为x/sum(x),或者为xifsum(x)<=1

x=[15,30,45,10]

#给定一个分裂序列,每一个元素表示每个圆弧间偏移量,为半径的百分比

explode=(0.1,0.1,0.1,0.1)

#如果没有指定startangle,扇区将从x轴开始逆时针排列,如果指定的值为90,饼图将从y轴开始

#autpct参数用来格式化绘制在圆弧中的标签

plt.pie(x,explode=explode,labels=labels,autopct='%1.1f%%',startangle=67)

plt.title('Rainydaysbyseason')

plt.show()

绘制带填充区域的图表

对曲线间或者曲线下面的区域填充颜色,这对我们理解给定的特定信息是非常有必要的。

x=np.arange(0.0,2,0.01)

y1=np.sin(2*np.pi*x)

y2=1.2*np.sin(4*np.pi*x)

fig=plt.figure(figsize=(10,6))

ax=plt.gca()

#绘制出两个信号的图形

ax.plot(x,y1,x,y2,color='black')

#fill_between()方法使用x为定位点选取y值(y1,y2),用where参数指定条件来填充曲线,where参数接手布尔值(可以是表达式)

ax.fill_between(x,y1,y2,where=y2>=y1,facecolor='darkblue',interpolate=True)

ax.fill_between(x,y1,y2,where=y2<=y1,facecolor='deeppink',interpolate=True)

ax.set_title('filledbetween')

plt.show()

绘制带彩色标记的散点图

散点图显示两组数据的值。

散点图可以作为更高级的多维数据可视化的基础,比如绘制散点图矩阵。

散点图通常在应用拟合回归之前绘制,用来识别两个变量间的关联。

x=np.random.randn(1000)

#y1为随机值,与x不相关

y1=np.random.randn(len(x))

#y2与x强相关

y2=1.2+np.exp(x)

fig=plt.figure(figsize=(10,6))

ax1=plt.subplot(121)

#marker参数用来设置点状标记(默认为circle),alpha参数表示透明度,edgecolors参数表示标记的边界颜色,label参数用于图例框

plt.scatter(x,y1,color='indigo',alpha=0.3,edgecolors='white',label='nocorrel')

plt.xlabel('nocorrelation')

plt.grid(True)

plt.legend()

ax2=plt.subplot(122,sharey=ax1,sharex=ax1)

plt.scatter(x,y2,color='green',alpha=0.3,edgecolor='grey',label='correl')

plt.xlabel('strongcorrelation')

plt.grid(True)

plt.legend()

plt.show()

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2