资讯专栏INFORMATION COLUMN

数据可视化之美 -- 以Matlab、Python为工具

why_rookie / 2827人阅读

摘要:在我们科研工作中,将数据完美展现出来尤为重要。数据可视化是以数据为视角,探索世界。我们真正想要的是数据视觉,以数据为工具,以可视化为手段,目的是描述真实,探索世界。

在我们科研、工作中,将数据完美展现出来尤为重要。
数据可视化是以数据为视角,探索世界。我们真正想要的是 — 数据视觉,以数据为工具,以可视化为手段,目的是描述真实,探索世界。
下面介绍一些数据可视化的作品(包含部分代码),主要是地学领域,可迁移至其他学科。
Example 1 :散点图、密度图(Python)

import numpy as npimport matplotlib.pyplot as plt# 创建随机数n = 100000x = np.random.randn(n)y = (1.5 * x) + np.random.randn(n)fig1 = plt.figure()plt.plot(x,y,".r")plt.xlabel("x")plt.ylabel("y")plt.savefig("2D_1V1.png",dpi=600)nbins = 200H, xedges, yedges = np.histogram2d(x,y,bins=nbins)# H needs to be rotated and flippedH = np.rot90(H)H = np.flipud(H)# 将zeros maskHmasked = np.ma.masked_where(H==0,H) # Plot 2D histogram using pcolorfig2 = plt.figure()plt.pcolormesh(xedges,yedges,Hmasked)  plt.xlabel("x")plt.ylabel("y")cbar = plt.colorbar()cbar.ax.set_ylabel("Counts")plt.savefig("2D_2V1.png",dpi=600)plt.show()

Example 2 :双Y轴(Python)

import csvimport pandas as pdimport matplotlib.pyplot as pltfrom datetime import datetimedata=pd.read_csv("LOBO0010-2020112014010.tsv",sep="/t")time=data["date [AST]"]sal=data["salinity"]tem=data["temperature [C]"]print(sal)DAT = []for row in time:DAT.append(datetime.strptime(row,"%Y-%m-%d %H:%M:%S"))#create figurefig, ax =plt.subplots(1)# Plot y1 vs x in blue on the left vertical axis.plt.xlabel("Date [AST]")plt.ylabel("Temperature [C]", color="b")plt.tick_params(axis="y", labelcolor="b")plt.plot(DAT, tem, "b-", linewidth=1)plt.title("Temperature and Salinity from LOBO (Halifax, Canada)")fig.autofmt_xdate(rotation=50) # Plot y2 vs x in red on the right vertical axis.plt.twinx()plt.ylabel("Salinity", color="r")plt.tick_params(axis="y", labelcolor="r")plt.plot(DAT, sal, "r-", linewidth=1)  #To save your graphplt.savefig("saltandtemp_V1.png" ,bbox_inches="tight")plt.show()

Example 3:拟合曲线(Python)

import csvimport numpy as npimport pandas as pdfrom datetime import datetimeimport matplotlib.pyplot as pltimport scipy.signal as signaldata=pd.read_csv("LOBO0010-20201122130720.tsv",sep="/t")time=data["date [AST]"]temp=data["temperature [C]"]datestart = datetime.strptime(time[1],"%Y-%m-%d %H:%M:%S")DATE,decday = [],[]for row in time:    daterow = datetime.strptime(row,"%Y-%m-%d %H:%M:%S")    DATE.append(daterow)    decday.append((daterow-datestart).total_seconds()/(3600*24))# First, design the Buterworth filterN  = 2    # Filter orderWn = 0.01 # Cutoff frequencyB, A = signal.butter(N, Wn, output="ba")# Second, apply the filtertempf = signal.filtfilt(B,A, temp)# Make plotsfig = plt.figure()ax1 = fig.add_subplot(211)plt.plot(decday,temp, "b-")plt.plot(decday,tempf, "r-",linewidth=2)plt.ylabel("Temperature (oC)")plt.legend(["Original","Filtered"])plt.title("Temperature from LOBO (Halifax, Canada)")ax1.axes.get_xaxis().set_visible(False) ax1 = fig.add_subplot(212)plt.plot(decday,temp-tempf, "b-")plt.ylabel("Temperature (oC)")plt.xlabel("Date")plt.legend(["Residuals"])plt.savefig("tem_signal_filtering_plot.png", bbox_inches="tight")plt.show()

Example 4:三维地形(Python)

# This import registers the 3D projectionfrom mpl_toolkits.mplot3d import Axes3D  from matplotlib import cbookfrom matplotlib import cmfrom matplotlib.colors import LightSourceimport matplotlib.pyplot as pltimport numpy as npfilename = cbook.get_sample_data("jacksboro_fault_dem.npz", asfileobj=False)with np.load(filename) as dem:    z = dem["elevation"]    nrows, ncols = z.shape    x = np.linspace(dem["xmin"], dem["xmax"], ncols)    y = np.linspace(dem["ymin"], dem["ymax"], nrows)x, y = np.meshgrid(x, y)region = np.s_[5:50, 5:50]x, y, z = x[region], y[region], z[region]fig, ax = plt.subplots(subplot_kw=dict(projection="3d"))ls = LightSource(270, 45)rgb = ls.shade(z, cmap=cm.gist_earth, vert_exag=0.1, blend_mode="soft")surf = ax.plot_surface(x, y, z, rstride=1, cstride=1, facecolors=rgb,                       linewidth=0, antialiased=False, shade=False)plt.savefig("example4.png",dpi=600, bbox_inches="tight")plt.show()

Example 5:三维地形,包含投影(Python)

Example 6:切片,多维数据同时展现(Python)

Example 7:SSH GIF 动图展现(Matlab)

Example 8:Glider GIF 动图展现(Python)

Example 9:涡度追踪 GIF 动图展现

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/123382.html

相关文章

  • 优秀程序员都应该学习的 GitHub 上开源的数据结构与算法项目

    摘要:强烈推荐上值得前端学习的数据结构与算法项目,包含图的演示过程与视频讲解。该仓库包含了多种基于的算法与数据结构,提供进一步阅读的解释和链接。数据结构和算法必知必会的个代码实现。 showImg(https://segmentfault.com/img/bVbvpYZ); 前言 算法为王。想学好前端,先练好内功,内功不行,就算招式练的再花哨,终究成不了高手;只有内功深厚者,前端之路才会走得...

    cheukyin 评论0 收藏0
  • 初学者怎么选择神经网络环境?对比MATLAB、Torch和TensorFlow

    摘要:本报告面向的读者是想要进入机器学习领域的学生和正在寻找新框架的专家。其输入需要重塑为包含个元素的一维向量以满足神经网络。卷积神经网络目前代表着用于图像分类任务的较先进算法,并构成了深度学习中的主要架构。 初学者在学习神经网络的时候往往会有不知道从何处入手的困难,甚至可能不知道选择什么工具入手才合适。近日,来自意大利的四位研究者发布了一篇题为《神经网络初学者:在 MATLAB、Torch 和 ...

    yunhao 评论0 收藏0
  • MATLAB更新R2017b:转换CUDA代码极大提升推断速度

    摘要:陈建平说训练是十分重要的,尤其是对关注算法本身的研究者。代码生成其实在中也十分简单,陈建平不仅利用车道线识别模型向我们演示了如何使用生成高效的代码,同时还展示了在脱离环境下运行代码进行推断的效果。 近日,Mathworks 推出了包含 MATLAB 和 Simulink 产品系列的 Release 2017b(R2017b),该版本大大加强了 MATLAB 对深度学习的支持,并简化了工程师、...

    Corwien 评论0 收藏0
  • Python与R、Matlab的对比

    摘要:我们来看一下美国相关专业人员对两者的对比,只是粗略而不精准的翻译一下。小结其实在写这篇文章之前,我就问过一下包括清华在内的学校以及一些数学专业的学生,和还是占主流,但是经过一番调查发现在美国在数据科学数学等方面好像渐成压倒性的优势。 作为一枚程序员,想要研究Python编程语言与数学学习(教学)的结合,就不能不了解以及比对一下其他数学学习与应用的解决方案,比如R语言、Matlab等数学...

    yunhao 评论0 收藏0
  • Python学数学相关教程、开源包推荐与下载

    摘要:在上篇文章里,为大家推荐了一些数学学习的软件和微积分线性代数概率统计的学习视频,今天再推荐一些精心挑选的经典教材,并为大家提供电子书的下载链接,和视频搭配起来一起学习,效果会更好。我们要使用的以及等都包含在里面,无需额外下载。 在上篇文章里,为大家推荐了一些数学学习的软件和微积分、线性代数、概率统计的学习视频,今天再推荐一些精心挑选的经典教材,并为大家提供电子书的下载链接,和视频搭配起...

    wapeyang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<