matplotlib基础汇总_04
- 3D图形
- 导包
- import numpy as np
- import matplotlib.pyplot as plt
- #3d图形必须的
- from mpl_toolkits.mplot3d.axes3d import Axes3D
- %matplotlib inline
- 生成数据
- #系数,由X,Y生成Z
- a = 0.7
- b = np.pi
- #计算Z轴的值
- def mk_Z(X, Y):
- return 2 + a - 2 * np.cos(X) * np.cos(Y) - a * np.cos(b - 2*X)
- #生成X,Y,Z
- x = np.linspace(0, 2*np.pi, 100)
- y = np.linspace(0, 2*np.pi, 100)
- X,Y = np.meshgrid(x, y)
- Z = mk_Z(X, Y)
- 绘制图形
- fig = plt.figure(figsize=(14,6))
- #创建3d的视图,使用属性projection
- ax = fig.add_subplot(1, 2, 1, projection='3d')
- ax.plot_surface(X,Y,Z,rstride = 5,cstride = 5)
- #创建3d视图,使用colorbar,添加颜色柱
- ax = fig.add_subplot(1, 2, 2, projection='3d')
- p = ax.plot_surface(X, Y, Z, rstride=5, cstride=5, cmap='rainbow', antialiased=True)
- cb = fig.colorbar(p, shrink=0.5)
- 玫瑰图
- #极坐标条形图
- def showRose(values,title):
- max_value = values.max()
- # 分为8个面元
- N = 8
- # 面元的分隔角度
- angle = np.arange(0.,2 * np.pi, 2 * np.pi / N)
- # 每个面元的大小(半径)
- radius = np.array(values)
- # 设置极坐标条形图
- plt.axes([0, 0, 2, 2], polar=True,facecolor = 'g')
- colors = [(1 - x/max_value, 1 - x/max_value, 0.75) for x in radius]
- # 画图
- plt.bar(angle, radius, width=(2*np.pi/N), bottom=0.0, color=colors)
- plt.title(title,x=0.2, fontsize=20)
- 绘制图形
- #拉韦纳(Ravenna)又译“腊万纳”“拉文纳”“拉温拿”。意大利北部城市。位于距亚得里亚海10公里的沿海平原上
- data = np.load('Ravenna_wind.npy')
- hist, angle = np.histogram(data,8,[0,360])
- showRose(hist,'Ravenna')
- 城市气候与海洋关系
- 导包
- import numpy as np
- import pandas as pd
- import matplotlib.pyplot as plt
- from pandas import Series,DataFrame
- %matplotlib inline
- 加载数据
- #意大利小镇费拉拉
- ferrara1 = pd.read_csv('./ferrara_150715.csv')
- ferrara2 = pd.read_csv('./ferrara_250715.csv')
- ferrara3 = pd.read_csv('./ferrara_270615.csv')
- ferrara = pd.concat([ferrara1,ferrara2,ferrara3],ignore_index=True)
- 去除没用的列
- asti.drop(['Unnamed: 0'],axis = 1,inplace=True)
- bologna.drop(['Unnamed: 0'],axis = 1,inplace=True)
- cesena.drop(['Unnamed: 0'],axis = 1,inplace=True)
- ferrara.drop(['Unnamed: 0'],axis = 1,inplace=True)
- mantova.drop(['Unnamed: 0'],axis = 1,inplace=True)
- milano.drop(['Unnamed: 0'],axis = 1,inplace=True)
- piacenza.drop(['Unnamed: 0'],axis = 1,inplace=True)
- ravenna.drop(['Unnamed: 0'],axis = 1,inplace=True)
- torino.drop(['Unnamed: 0'],axis = 1,inplace=True)
- 获取个城市距离海边距离,最高温度,最低温度,最高湿度,最低湿度
- dist = [ravenna['dist'][0],
- cesena['dist'][0],
- faenza['dist'][0],
- ferrara['dist'][0],
- bologna['dist'][0],
- mantova['dist'][0],
- piacenza['dist'][0],
- milano['dist'][0],
- asti['dist'][0],
- torino['dist'][0]
- ]
- temp_max = [ravenna['temp'].max(),
- cesena['temp'].max(),
- faenza['temp'].max(),
- ferrara['temp'].max(),
- bologna['temp'].max(),
- mantova['temp'].max(),
- piacenza['temp'].max(),
- milano['temp'].max(),
- asti['temp'].max(),
- torino['temp'].max()
- ]
- temp_min = [ravenna['temp'].min(),
- cesena['temp'].min(),
- faenza['temp'].min(),
- ferrara['temp'].min(),
- bologna['temp'].min(),
- mantova['temp'].min(),
- piacenza['temp'].min(),
- milano['temp'].min(),
- asti['temp'].min(),
- torino['temp'].min()
- ]
- hum_min = [ravenna['humidity'].min(),
- cesena['humidity'].min(),
- faenza['humidity'].min(),
- ferrara['humidity'].min(),
- bologna['humidity'].min(),
- mantova['humidity'].min(),
- piacenza['humidity'].min(),
- milano['humidity'].min(),
- asti['humidity'].min(),
- torino['humidity'].min()
- ]
- hum_max = [ravenna['humidity'].max(),
- cesena['humidity'].max(),
- faenza['humidity'].max(),
- ferrara['humidity'].max(),
- bologna['humidity'].max(),
- mantova['humidity'].max(),
- piacenza['humidity'].max(),
- milano['humidity'].max(),
- asti['humidity'].max(),
- torino['humidity'].max()
- ]
- 显示最高温度与离海远近的关系
- plt.axis([0,400,32,35])
- plt.plot(dist,temp_max,'ro')
- 根据距海远近划分数据
- 观察发现,离海近的可以形成一条直线,离海远的也能形成一条直线。
- 首先使用numpy:把列表转换为numpy数组,用于后续计算。
- 分别以100公里和50公里为分界点,划分为离海近和离海远的两组数据
- # 把列表转换为numpy数组
- x = np.array(dist)
- display('x:',x)
- y = np.array(temp_max)
- display('y:',y)
- # 离海近的一组数据
- x1 = x[x<100]
- x1 = x1.reshape((x1.size,1))
- display('x1:',x1)
- y1 = y[x<100]
- display('y1:',y1)
- # 离海远的一组数据
- x2 = x[x>50]
- x2 = x2.reshape((x2.size,1))
- display('x2:',x2)
- y2 = y[x>50]
- display('y2:',y2)
- 机器学习计算回归模型
- from sklearn.svm import SVR
- svr_lin1 = SVR(kernel='linear', C=1e3)
- svr_lin2 = SVR(kernel='linear', C=1e3)
- svr_lin1.fit(x1, y1)
- svr_lin2.fit(x2, y2)
- xp1 = np.arange(10,100,10).reshape((9,1))
- xp2 = np.arange(50,400,50).reshape((7,1))
- yp1 = svr_lin1.predict(xp1)
- yp2 = svr_lin2.predict(xp2)
- 绘制回归曲线
- plt.plot(xp1, yp1, c='r', label='Strong sea effect')
- plt.plot(xp2, yp2, c='b', label='Light sea effect')
- #plt.axis('tight')
- plt.legend()
- plt.scatter(x, y, c='k', label='data')
- 最低温度与海洋距离关系
- plt.axis((0,400,16,21))
- plt.plot(dist,temp_min,'bo')
- 最低湿度与海洋距离关系
- plt.axis([0,400,70,120])
- plt.plot(dist,hum_min,'bo')
- 最高湿度与海洋距离关系
- plt.axis([0,400,70,120])
- plt.plot(dist,hum_max,'bo')
- 平均湿度与海洋距离的关系
- hum_mean = [ravenna['humidity'].mean(),
- cesena['humidity'].mean(),
- faenza['humidity'].mean(),
- ferrara['humidity'].mean(),
- bologna['humidity'].mean(),
- mantova['humidity'].mean(),
- piacenza['humidity'].mean(),
- milano['humidity'].mean(),
- asti['humidity'].mean(),
- torino['humidity'].mean()
- ]
- plt.plot(dist,hum_mean,'bo')
- 风速与风向的关系
- plt.plot(ravenna['wind_deg'],ravenna['wind_speed'],'ro')
- 在子图中,同时比较风向与湿度和风力的关系
- plt.subplot(211)
- plt.plot(cesena['wind_deg'],cesena['humidity'],'bo')
- plt.subplot(212)
- plt.plot(cesena['wind_deg'],cesena['wind_speed'],'bo')
- 玫瑰图
- def showRoseWind(values,city_name):
- '''
- 查看风向图,半径越大,代表这个方向上的风越多
- '''
- max_value = values.max()
- # 分为8个面元
- N = 8
- # 面元的分隔角度
- theta = np.arange(0.,2 * np.pi, 2 * np.pi / N)
- # 每个面元的大小(半径)
- radii = np.array(values)
- # 设置极坐标条形图
- plt.axes([0.025, 0.025, 0.95, 0.95], polar=True)
- colors = [(1 - x/max_value, 1 - x/max_value, 0.75) for x in radii]
- # 画图
- plt.bar(theta, radii, width=(2*np.pi/N), bottom=0.0, color=colors)
- plt.title(city_name,x=0.2, fontsize=20)
- 用numpy创建一个直方图,将360度划分为8个面元,将数据分类到这8个面元中
- hist, bin = np.histogram(ravenna['wind_deg'],8,[0,360])
- print(hist)
- hist = hist/hist.sum()
- print(bin)
- showRoseWind(hist,'Ravenna')
- 计算米兰各个方向的风速
- print(milano[milano['wind_deg']<45]['wind_speed'].mean())
- print(milano[(milano['wind_deg']>44) & (milano['wind_deg']<90)]['wind_speed'].mean())
- print(milano[(milano['wind_deg']>89) & (milano['wind_deg']<135)]['wind_speed'].mean())
- print(milano[(milano['wind_deg']>134) & (milano['wind_deg']<180)]['wind_speed'].mean())
- print(milano[(milano['wind_deg']>179) & (milano['wind_deg']<225)]['wind_speed'].mean())
- print(milano[(milano['wind_deg']>224) & (milano['wind_deg']<270)]['wind_speed'].mean())
- print(milano[(milano['wind_deg']>269) & (milano['wind_deg']<315)]['wind_speed'].mean())
- print(milano[milano['wind_deg']>314]['wind_speed'].mean())
- 将各个方向风速保存到列表中
- degs = np.arange(45,361,45)
- tmp = []
- for deg in degs:
- tmp.append(milano[(milano['wind_deg']>(deg-46)) & (milano['wind_deg']<deg)]['wind_speed'].mean())
- speeds = np.array(tmp)
- print(speeds)
- 画出各个方向的风速
- N = 8
- theta = np.arange(0.,2 * np.pi, 2 * np.pi / N)
- radii = np.array(speeds)
- plt.axes([0.025, 0.025, 0.95, 0.95], polar=True)
- colors = [(1-x/10.0, 1-x/10.0, 0.75) for x in radii]
- bars = plt.bar(theta, radii, width=(2*np.pi/N), bottom=0.0, color=colors)
- plt.title('Milano',x=0.2, fontsize=20)
- 抽取函数
- def RoseWind_Speed(city):
- degs = np.arange(45,361,45)
- tmp = []
- for deg in degs:
- tmp.append(city[(city['wind_deg']>(deg-46)) & (city['wind_deg']<deg)]['wind_speed'].mean())
- return np.array(tmp)
- def showRoseWind_Speed(speeds,city_name):
- N = 8
- theta = np.arange(0.,2 * np.pi, 2 * np.pi / N)
- radii = np.array(speeds)
- plt.axes([0.025, 0.025, 0.95, 0.95], polar=True)
- colors = [(1-x/10.0, 1-x/10.0, 0.75) for x in radii]
- bars = plt.bar(theta, radii, width=(2*np.pi/N), bottom=0.0, color=colors)
- plt.title(city_name,x=0.2, fontsize=20)
- 函数调用
- showRoseWind_Speed(RoseWind_Speed(ravenna),'Ravenna')
2020-05-24
matplotlib基础汇总_04的更多相关文章
- matplotlib基础汇总_03
四图 直方图 [直方图的参数只有一个x!!!不像条形图需要传入x,y] hist()的参数 bins 可以是一个bin数量的整数值,也可以是表示bin的一个序列.默认值为10 normed 如果值为T ...
- matplotlib基础汇总_01
灰度化处理就是将一幅色彩图像转化为灰度图像的过程.彩色图像分为R,G,B三个分量,分别显示出红绿蓝等各种颜色,灰度化就是使彩色的R,G,B分量相等的过程.灰度值大的像素点比较亮(像素值最大为255,为 ...
- matplotlib基础汇总_02
设置plot的风格和样式 点和线的样式 颜色 参数color或c 五种定义颜色值的方式 别名 color='r' 合法的HTML颜色名 color = 'red' HTML十六进制字符串 color ...
- shell脚本语法基础汇总
shell脚本语法基础汇总 将命令的输出读入一个变量中,可以将它放入双引号中,即可保留空格和换行符(\n) out=$(cat text.txt) 输出1 2 3 out="$(cat te ...
- 数据分析与展示——Matplotlib基础绘图函数示例
Matplotlib库入门 Matplotlib基础绘图函数示例 pyplot基础图表函数概述 函数 说明 plt.plot(x,y,fmt, ...) 绘制一个坐标图 plt.boxplot(dat ...
- linux编程基础汇总贴
linux编程基础汇总贴http://newzol.cn/forum.php?mod=viewthread&tid=67&fromuid=3(出处: newzol) 1.管道 http ...
- Matplotlib基础图形之散点图
Matplotlib基础图形之散点图 散点图特点: 1.散点图显示两组数据的值,每个点的坐标位置由变量的值决定 2.由一组不连续的点组成,用于观察两种变量的相关性(正相关,负相关,不相关) 3.例如: ...
- Selenium基于Python web自动化基础一 -- 基础汇总及简单操作
Selenium是UI层WEB端的自动化测试框架,也是目前市面上比较流行的自动化测试框架. ui层自动化测试本质是什么?模拟用户的真实操作行为. 基础汇总: 导入所需要的模块 from seleniu ...
- Matplotlib基础知识
Matplotlib基础知识 Matplotlib中的基本图表包括的元素 x轴和y轴 axis水平和垂直的轴线 x轴和y轴刻度 tick刻度标示坐标轴的分隔,包括最小刻度和最大刻度 x轴和y轴刻度标签 ...
随机推荐
- 用户不在sudoers文件中怎么办,ziheng is not in the sudoers file解决方法
sudo是linux系统中,用来执行需要权限命令,但是一些朋友使用sudo时,出现下面的错误“ziheng is not in the sudoers file. This incident will ...
- Oracle 11gR2 待定的统计信息(Pending Statistic)
Oracle 11gR2 待定的统计信息(Pending Statistic) 官档最权威: 发布优化器统计信息的用户界面 管理已发布和待处理的统计信息 实验先拖着.
- css3 自定义字体_使用@font-face方式实现个性化字体
当我们在浏览一些网站时发现,里面含有一些十分个性的字体,这些字体并不是我们电脑上安装的字体.那么css是如何实现自定义字体的呢? 资源网站大全https://55wd.com 在css3中可以通过@f ...
- JAVA的8种基本数据类型分析
基本数据类型(8个) 1.整数类型(4个) 字节个数 取值范围 byte(字节) 1(8位) -2^7~2^7-1 short(短整型) 2(16位) -2^15~2^15-1 int(整形) 4 ...
- Shein一面(视频面)07.07
应聘职位:Java工程师 时长:30min 面经: Spring讲一下 SpringAOP用到什么设计模式 JVM包括什么 运行时数据区包括什么 什么时候入栈,出栈 Sychronized和可重入锁区 ...
- DNP3协议解析 —— 利用Wireshark对报文逐字节进行解析详细解析Modbus所含功能码
现在网上有很多类似的文章.其实这一篇也借鉴了很多其他博主的文章. 写这篇文章的重点是在于解析功能和报文.对Dnp3这个协议并不会做很多介绍. 那我们就开始吧 上图则为dnp3协议整体的报文模型(点击红 ...
- MySQL数据库的卸载与安装
MySQL数据库的卸载与安装 MySQL的完全卸载 因为不知道什么原因,电脑里同时存在两个版本的mysql,所以决定卸载重新安装,但是大家都说MySQL很难清除干净,所以特地查找完全卸载MySQL的方 ...
- 深入理解JVM(③)线程与Java的线程
前言 我们都知道,线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源调度(内存地址.文件I/O等),又可以独立调度. 线程的实现 主流的 ...
- python 并发专题(七):Twisted相关函数以及实现
一.基础原理 二.基本函数 三.爬虫实现 四.web服务器与客户端实现
- 临时解决GitHub的raw.githubusercontent.com无法连接问题
http://qjzd.net:3000/topic/5e48cc33dcf06d6a181ffb81 查询真实IP 通过IPAddress.com首页,输入raw.githubusercontent ...