数据结构论坛

注册

 

发新话题 回复该主题

python学习笔记矢量场流线图和气温图 [复制链接]

1#
治疗白癜风的中成药 https://wapjbk.39.net/yiyuanfengcai/tsyl_bjzkbdfyy/485wdwe/

气温图#导入模块csv后importcsvfromdatetimeimportdatetimefrommatplotlibimportpyplotasplt#将要使用的文件的名称存储在filename中filename=sitka_weather_.csv#打开这个文件,并将结果文件对象存储在f中withopen(filename)asf调用csv.reader(),并将前面存储的文件对象作为实参传递给它#从而创建一个与该文件相关联的阅读器(reader)对象reader=csv.reader(f)#调用next()并将阅读器对象传递给它时,得到的是文件的第一行,其中包含文件头header_row=next(reader)#创建三个列表dates,highs,lows,将日期时间,最高气温,最低气温,分别记录到三个列表当中dates,highs,lows=[],[],[]forrowinreader针对ValueError异常,打印一条错误消息,#指出缺失数据的日期try设置日期格式为****-**-**,Python中的第一列为第0列#所以高温数据中的1代表CSV文件中的第二列,以下依次类推current_date=datetime.strptime(row[0],%Y-%m-%d)high=int(row[1])low=int(row[3])exceptValueError:print(current_date,missingdata)elseates.append(current_date)highs.append(high)lows.append(low)#设置图纸的分辨率和图纸大小,绘制日期、高温、低温折线图,颜色,透明度fig=plt.figure(dpi=,figsize=(10,6))plt.plot(dates,highs,c=red,alpha=0.5)plt.plot(dates,lows,c=blue,alpha=0.5)#给高温、低温的间隔区域着色,透明度加大,与低温曲线区分plt.fill_between(dates,highs,lows,facecolor=blue,alpha=0.1)#设置图形的格式plt.title(Dailyhighandlowtemperatures-,fontsize=24)plt.xlabel(,fontsize=16)#自动设置日期在图表中的位置,避免日期时间重叠fig.autofmt_xdate()plt.ylabel(Temperature(F),fontsize=16)plt.tick_params(axis=both,which=major,labelsize=16)#展示plt.show()

figure1

2.颜色表图

importmatplotlibasmplimportmatplotlib.pyplotaspltimportnumpyasnp#创建包含九种颜色的列表red_yellow_green=[#d,#f46d43,#fdae61,#fee08b,#ffffbf,#d9ef8b,#a6d96a,#66bd63,#1a]#设置参数,创建一个子图sample_size=fig,ax=plt.subplots(1)#创建一个for循环,分别绘制九种颜色的散点图,range(9)代表上述列表中的九种颜色foriinrange(9)np.cumsum()累计求和y=np.random.normal(size=sample_size).cumsum()#仅输入stop(sample_size)值,此时start默认从0开始x=np.arange(sample_size)ax.scatter(x,y,label=str(i),linewidth=0.1,edgecolors=grey,facecolor=red_yellow_green)#显示图例ax.legend()plt.show()

figure2

3.矢量场流线图

#矢量场可以通过为每个点指定一个线条和一个或多个箭头的方式来表示出来#强度根据线条长度来判断,方向按照箭头方向来判断importmatplotlib.pyplotaspltimportnumpyasnp#0:5表示数组中数值所在的区间。j表示划分的密度,值越大,图片越清晰Y,X=np.mgrid[0:5:j,0:5:j]#(X,Y)是一维numpy数组的等距网格,(U,V)参数匹配的是(X,Y)速率的二维numpy数组#U,V矩阵在维度上的行数必须等于Y的长度,列的数量必须匹配X的长度U=np.sin(X)V=np.sin(Y)#pprint包含一个“美观打印机”,用于生成数据结构的一个美观视图。frompprintimportpprint#print()和pprint()都是python的打印模块,功能基本一样#唯一的区别就是pprint()模块打印出来的数据结构更加完整,每行为一个数据结构,更加方便阅读打印输出结果。print(X)pprint(X)#pprint()采用分行打印输出print(Y)pprint(Y)#可视化矢量场plt.streamplot(X,Y,U,V)plt.show()

得到以下文本

X

array([[0.,0.,0.,...,4.,4.,

5.],

[0.,0.,0.,...,4.,4.,

5.],

[0.,0.,0.,...,4.,4.,

5.],

...,

[0.,0.,0.,...,4.,4.,

5.],

[0.,0.,0.,...,4.,4.,

5.],

[0.,0.,0.,...,4.,4.,

5.]])

Y

array([[0.,0.,0.,...,0.,0.,

0.],

[0.,0.,0.,...,0.,0.,

0.],

[0.,0.,0.,...,0.,0.,

0.],

...,

[4.,4.,4.,...,4.,4.,

4.],

[4.,4.,4.,...,4.,4.,

4.],

[5.,5.,5.,...,5.,5.,

5.]])

figure3
分享 转发
TOP
发新话题 回复该主题