扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
python怎么输出用*绘制的图形如下说明。
成都创新互联公司专业为企业提供浑江网站建设、浑江做网站、浑江网站设计、浑江网站制作等企业网站建设、网页设计与制作、浑江企业网站模板建站服务,10多年浑江做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
其实想要输出*的图形是很简单的。只要在用print函数即可,如图片想要用*字符输出一个三角形的图案,我要用只要用print加括号,括号中想要输出的字符用双引号引起来,如第一个print输出人上*字符,第二行输出三个字符,一直添加print,按一定的比例输出*即可。想要输复杂图形就要深入了解python语言才行。
Python简介,Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。Python是一种解释型语言 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。Python是初学者的语言,Python对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发。
对于气象绘图来讲,第一步是对数据的处理,通过各类公式,或者统计方法将原始数据处理为目标数据。
按照气象统计课程的内容,我给出了一些常用到的统计方法的对应函数:
在计算气候态,区域平均时均要使用到求均值函数,对应NCL中的dim_average函数,在python中通常使用np.mean()函数
numpy.mean(a, axis, dtype)
假设a为[time,lat,lon]的数据,那么
需要特别注意的是,气象数据中常有缺测,在NCL中,使用求均值函数会自动略过,而在python中,当任意一数与缺测(np.nan)计算的结果均为np.nan,比如求[1,2,3,4,np.nan]的平均值,结果为np.nan
因此,当数据存在缺测数据时,通常使用np.nanmean()函数,用法同上,此时[1,2,3,4,np.nan]的平均值为(1+2+3+4)/4 = 2.5
同样的,求某数组最大最小值时也有np.nanmax(), np.nanmin()函数来补充np.max(), np.min()的不足。
其他很多np的计算函数也可以通过在前边加‘nan’来使用。
另外,
也可以直接将a中缺失值全部填充为0。
np.std(a, axis, dtype)
用法同np.mean()
在NCL中有直接求数据标准化的函数dim_standardize()
其实也就是一行的事,根据需要指定维度即可。
皮尔逊相关系数:
相关可以说是气象科研中最常用的方法之一了,numpy函数中的np.corrcoef(x, y)就可以实现相关计算。但是在这里我推荐scipy.stats中的函数来计算相关系数:
这个函数缺点和有点都很明显,优点是可以直接返回相关系数R及其P值,这避免了我们进一步计算置信度。而缺点则是该函数只支持两个一维数组的计算,也就是说当我们需要计算一个场和一个序列的相关时,我们需要循环来实现。
其中a[time,lat,lon],b[time]
(NCL中为regcoef()函数)
同样推荐Scipy库中的stats.linregress(x,y)函数:
slop: 回归斜率
intercept:回归截距
r_value: 相关系数
p_value: P值
std_err: 估计标准误差
直接可以输出P值,同样省去了做置信度检验的过程,遗憾的是仍需同相关系数一样循环计算。
今天开始琢磨用Python画图,没使用之前是一脸懵的,我使用的开发环境是Pycharm,这个输出的是一行行命令,这个图画在哪里呢?
搜索之后发现,它会弹出一个对话框,然后就开始画了,比如下图
第一个常用的库是Turtle,它是Python语言中一个很流行的绘制图像的函数库,这个词的意思就是乌龟,你可以想象下一个小乌龟在一个x和y轴的平面坐标系里,从原点开始根据指令控制,爬行出来就是绘制的图形了。
它最常用的指令就是旋转和移动,比如画个圆,就是绕着圆心移动;再比如上图这个怎么画呢,其实主要就两个命令:
turtle.forward(200)
turtle.left(170)
第一个命令是移动200个单位并画出来轨迹
第二个命令是画笔顺时针转170度,注意此时并没有移动,只是转角度
然后呢? 循环重复就画出来这个图了
好玩吧。
有需要仔细研究的可以看下这篇文章 ,这个牛人最后用这个库画个移动的钟表,太赞了。
Turtle虽好玩,但是我想要的是我给定数据,然后让它画图,这里就找到另一个常用的画图的库了。
Matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图。其中,matplotlib的pyplot模块一般是最常用的,可以方便用户快速绘制二维图表。
使用起来也挺简单,
首先import matplotlib.pyplot as plt 导入画图的图。
然后给定x和y,用这个命令plt.plot(x, y)就能画图了,接着用plt.show()就可以把图形展示出来。
接着就是各种完善,比如加标题,设定x轴和y轴标签,范围,颜色,网格等等,在 这篇文章里介绍的很详细。
现在互联网的好处就是你需要什么内容,基本上都能搜索出来,而且还是免费的。
我为什么要研究这个呢?当然是为了用,比如我把比特币的曲线自己画出来可好?
假设现在有个数据csv文件,一列是日期,另一列是比特币的价格,那用这个命令画下:
这两列数据读到pandas中,日期为df['time']列,比特币价格为df['ini'],那我只要使用如下命令
plt.plot(df['time'], df['ini'])
plt.show()
就能得到如下图:
自己画的是不是很香,哈哈!
然后呢,我在上篇文章 中介绍过求Ahr999指数,那可不可以也放到这张图中呢?不就是加一条命令嘛
plt.plot(df['time'], df['Ahr999'])
图形如下:
但是,Ahr999指数怎么就一条线不动啊, 原来两个Y轴不一致,显示出来太怪了,需要用多Y轴,问题来了。
继续谷歌一下,把第二个Y轴放右边就行了,不过呢得使用多图,重新绘制
fig = plt.figure() # 多图
ax1 = fig.add_subplot(111)
ax1.plot(df['time'], df['ini'], label="BTC price") # 绘制第一个图比特币价格
ax1.set_ylabel('BTC price') # 加上标签
# 第二个直接对称就行了
ax2 = ax1.twinx()# 在右边增加一个Y轴
ax2.plot(df['time'], df['Ahr999'], 'r', label="ahr999") # 绘制第二个图Ahr999指数,红色
ax2.set_ylim([0, 50])# 设定第二个Y轴范围
ax2.set_ylabel('ahr999')
plt.grid(color="k", linestyle=":")# 网格
fig.legend(loc="center")#图例
plt.show()
跑起来看看效果,虽然丑了点,但终于跑通了。
这样就可以把所有指数都绘制到一张图中,等等,三个甚至多个Y轴怎么加?这又是一个问题,留给爱思考爱学习的你。
有了自己的数据,建立自己的各个指数,然后再放到图形界面中,同时针对异常情况再自动进行提醒,比如要抄底了,要卖出了,用程序做出自己的晴雨表。
#PythonDraw.py
import turtle #导入turtle库
turtle.setup(650, 350, 200, 200) #设置画布大小和位置
turtle.penup() #抬起画笔
turtle.fd(-250) #画笔在空中向前飞行-250个像素
turtle.pendown() #画笔落下
turtle.pensize(25) #画笔宽度25个像素
turtle.pencolor("purple") #画笔颜色为紫色
turtle.seth(-40) #海龟方向香油转动45度,但是不行进
for i in range(4): #这里是一个循环
turtle.circle(40, 80) #绕着左边40远处的点向转80度
turtle.circle(-40, 80) #绕着右边40远处的点向转80度
turtle.circle(40, 80/2) #绕着左边40远处的点向转80/2度
turtle.fd(40) #向前40个像素
turtle.circle(16, 180) #绕着左边16远处的点向转180度
turtle.fd(40 * 2/3) #向前40*2/3个像素
turtle.done() #运行完不退出
1.turtle库基本介绍
有一只海龟,其在窗体正中心,在画布上游走,走过的轨迹形成了绘制的图形, 海龟由程序控制,可以变换颜色、改变宽度等。
2.turtle库绘图窗体布局
不设置位置,默认在屏幕中心显示
3.turtle库空间坐标体系
绝对坐标,可以使用goto函数到达指定位置
例如:
4.turtle库角度坐标体系
5.RGB色彩体系
python沿画笔的方向画线用forward()函数。
forward()函数能使画笔前进,比如沿画笔方向画100像素的直线,代码如下所示:turtle.forward(100)。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流