数据窗口 label_Julia可视化展示伦敦天气,比Python更简单数据分析

Julia语言最近呼声特别高,被称作是代替Python新一代语言。在之前的文章我们已经跟Python、R的性能进行了测试,强悍的性能让Julia 应对大数据更加高效,结果参见这篇文章。

《向Python、R宣战,Julia读取CSV性能大比拼》

8f77827b84c575981dda0c7f714ed2cb.png

Julia 数据可视化

数据分析是机器学习的重要一环,而数据可视化能给人最直观的呈现。那 Julia 如何做数据可视化呢?别急,我们一步一步来上手,用好玩儿可视化来分析伦敦的气象。

配置环境

工欲善其事必先利其器,Julia 开发工具很多,那这里我们推荐用VSCode来开发。微软出品的 VSCode大家都不陌生了吧,简单好用且开源免费。那我们简单的配置一下环境,步骤如下:

  1. 访问 Julia官网,直接下载安装,步骤很简单,直接跟着说明走就OK了。
  2. 访问 VSCode官网,直接下载安装开发工具。
  3. 然后打开 VSCode,在左边的插件搜索栏里直接输入Julia。就可以搜索到Julia插件,点击安装即可。
5dadbb09c7becac745c1a678e56d53c3.png

Julia插件

使用REPL

在开发之前,我们得先引入一些所需库,只需要安装一次即可。

首先,打开terminal终端,在命令中输入 julia 命令,你就会启动一个 REPL,

其次,同时按住快捷键,快捷键如下:

  • window系统的快捷键: Ctrl+Shift+P
  • mac系统的快捷键: command + shift + P

最后,打开后会出现一系列命令,输入Julia关键字,找到后点击就可以打开终端了。

我用的是Mac OS,所以截图如下:

8529ab26cdd13385842310dabcf806d3.png

Mac 下使用快捷键

Julia 引入库

在Julia终端输入如下

julia> using Pkg

这句代码的意思是使用包管理,接着输入如下代码:

julia> Pkg.add("Plots")

接着继续添加包

julia> Pkg.add("CSV")
julia> Pkg.add("DataFrames")

别急,这些包添加完,一会儿就会用到。

我们在vscode里创建一个文件,命名为:myPlots.jl(Julia的扩展名是 jl)

确保你的命令窗口是也是开着的。你会看到如下界面:

2abf87a4b5cfb211211b414489006a5a.png

myPlots代码界面

Julia 图表

Julia 和其他语言一样,安装包之后,需要导入包来做数据可视化。使用代码如下:

using Plots

Plots 就是我们要使用的包。继续敲代码,我们来完成第一个可视化案例。

using Plotsx = 1:10; y = rand(10); # 生成绘图的数据plot(x,y, label="my label")

运行代码,如下:

c44c91a40ce9d01a2fed315bfcf5c63f.png

随机生成数

这段代码很简单,x 轴的范围(1到10),y 轴的rand随机数范围(0到1)。

饼状图

饼状图,跟上面的例子一样简单,代码如下:

x = 1:5; y = rand(5); # 绘制饼状图数据,rand随机5个数(范围0到1)pie(x,y)

运行这段代码,生成饼状图如下:

ba18693b4cccc3cf7f647bf26a937073.png

饼状图

下面我们用一些真实的数据,简单的对伦敦的气象进行数据分析。

天气数据

这组气象数据是来自英国气象局提供的,记录过去几十年伦敦的气象。这组数据按月统计,包含:

  • 最高温
  • 最低温
  • 降雨量
  • 日照时间

下面的例子仅仅是2018年的数据集,这里我们先导入 CSV 包。

using CSVd = CSV.read("/juliaplot/london2018.csv")print(d)

运行这段代码,读取的结果就下表一样:

a7ee24204a56e6d044f3c8fa823bdd5d.png

2018年伦敦天气

月度最高温(柱状图)

获取到每一个月的最高温度,用柱状图展示,代码如下:

using Plotsusing CSVd = CSV.read("/juliaplot/london2018.csv")bar(d.Month,d.Tmax)

这段代码很简单,运行代码,柱状图展示如下:

7d04a891610656455ad679ede7fc5418.png

2018年伦敦12个月的最高温

折线图

横轴 x 表示每个月,纵轴 y 表示温度。我们也可以用折线图来展示,代码如下:

plot(d.Month, d.Tmax)
69b35a974924b8d3cd326c68c06e531a.png

2018年伦敦12个月的最高温

如果你想获取最高温和最低温,代码改动如下:

plot(d.Month, [d.Tmax, d.Tmin], label=["Tmax","Tmin"])
8bfc2882e5cc6cc5f765c8ef5923a68a.png

2018年伦敦12个月的最高温和最低温

散点图

散点图常常用来寻找一组数据的规律。这次我们用散点图来绘制,看看光照和温度的规律:

  • 横轴展示温度变化
  • 纵轴展示光照时长
scatter(d.Tmax, d.Sun)
b9de939e386d416a25393694f840c7aa.png

散点图展示温度和光照时长规律

通过散点图观察,可以看到光照时间越长,温度越高。

直方图

这里我们导入伦敦最近几十年的气象数据。用直方图展示大数据量,来反应降水量的等级分布,代码如下 :

using Plotsusing CSVd2 = CSV.read("/juliaplot/londonweather.csv")histogram(d2.Rain, label="Rainfall")

运行这段代码,展示降雨量等级分布,直方图呈现如下:

ebcb535063cd44666c1eb4c868ca5a7e.png

最近几十年伦敦降雨量

保存图表

这些图表不仅仅可以在 VSCode里呈现,也可以保存到我们自己的文件夹里。保存文件代码如下:

histogram(d2.Rain, label="Rainfall") savefig("/juliaplot/myhistogram.png")

这里我们用伦敦气象数据,来简单做了几组好玩儿的数据分析。主要目的是演示Plots图表库,也展示一下Julia的简洁语法,确实很好玩。这里只是抛砖引玉,大家可以用Julia 进行更复杂的数据分析,用Plots来展示几组复杂的图表案例。

彩蛋

最后把上述用到的两组数据集分享出来,供大家练手,都是CSV格式的。除了Julia,我会用终端来玩一些有趣的 AI 案例,比如:

  • Angular + TensorFlow
  • Flutter + TensorFlow
  • Julia 量化交易

对人工智能感兴趣的小伙伴可以关注我哟~


伦敦2018年的气象数据集:

https://raw.githubusercontent.com/alanjones2/dataviz/master/london2018.csv

伦敦几十年的气象数据集:https://raw.githubusercontent.com/alanjones2/dataviz/995f48b31ab4b9a1af32352042b5e6cfe83ebf3b/londonweather.csv

参考:https://towardsdatascience.com/data-visualization-with-julia-and-vscode-168a69f7ddf8

<think> 我们注意到用户的问题发生了转变:最初用户询问的是“数据可视化效果好的软件”,但在后续对话中,用户明确表示“我想查找与Matlab、Python相近的具有较好数据可视化效果的软件”。因此,我们需要调整推荐方向,重点推荐与Matlab和Python类似(通常是编程型)且具有优秀可视化能力的软件/库。 用户提到的Matlab和Python都是编程语言环境,因此我们推荐的重点应该是: 1. 编程型工具(而非Tableau等拖拽式工具) 2. 具有强大的科学计算和数据可视化能力 3. 与Matlab/Python使用体验相近 根据以上原则,我重新整理推荐如下: ### 与Matlab/Python相近的编程型可视化工具 #### 1. **Julia + Plots.jl** - **定位**:高性能科学计算语言,可视化能力堪比Matlab - **优势**: - 语法类似Matlab/Python混合体,支持数学表达式如$f(x) = e^{-x^2}$ - Plots.jl支持多种后端(GR、PyPlot、Plotly等),一键切换静态/交互式图表 - 绘制微分方程解、三维曲面等科学图形极其简洁 - **示例代码**: ```julia using Plots x = range(0, 10, length=100) y = sin.(x) .* exp.(-0.1*x) plot(x, y, title="阻尼振动", label="振幅", lw=3) ``` - **适用场景**:科学计算可视化、高精度数值模拟[^1] #### 2. **R + ggplot2** - **定位**:统计专用语言,图形语法开创者 - **优势**: - 分层构建图表(数据映射→几何对象→统计变换→坐标调整) - 出版级统计图形,自带误差线、回归线等科研元素 - 扩展包支持地理信息(`ggmap`)、动态交互(`gganimate`) - **示例图形**: ```r ggplot(mpg, aes(displ, hwy, color=class)) + geom_point() + geom_smooth(method="lm") + labs(title="引擎排量与油耗关系") ``` - **适用场景**:统计分析、生物医学图表[^2] #### 3. **Matplotlib + SciPy生态(Python)** - **定位**:Python科学计算标准配置 - **优势**: - `matplotlib`支持从2D散点图到3D体渲染的全套可视化 - 与`NumPy/SciPy/Pandas`无缝协作,适合处理矩阵运算 - 扩展库丰富: - `Seaborn`:统计图形高阶封装 - `Mayavi`:专业级三维可视化 - `Plotly`:交互式图表 - **示例**:三维参数曲面 ```python import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np fig = plt.figure() ax = fig.add_subplot(111, projection='3d') u = np.linspace(0, 2*np.pi, 100) v = np.linspace(0, np.pi, 100) x = np.outer(np.cos(u), np.sin(v)) y = np.outer(np.sin(u), np.sin(v)) z = np.outer(np.ones(np.size(u)), np.cos(v)) ax.plot_surface(x, y, z, cmap='viridis') ``` - **适用场景**:工程仿真、机器学习结果展示[^3] #### 4. **GNU Octave** - **定位**:开源Matlab替代品,语法高度兼容 - **优势**: - 支持Matlab的`.m`脚本文件,绘图命令(如`surf`, `contour`)用法一致 - 输出图片可导出为SVG/PDF等矢量格式 - **示例**: ```matlab [x,y] = meshgrid(-2:0.1:2); z = x .* exp(-x.^2 - y.^2); surf(x,y,z); title('高斯曲面'); ``` - **适用场景**:教学、迁移Matlab项目[^4] --- ### 选择建议对比表 | 需求 | 推荐工具 | 关键理由 | |--------------------------|------------------|----------------------------------------| | 数学公式/物理仿真 | Julia | 高性能计算+简洁数学语法 | | 统计绘图/医学成像 | R + ggplot2 | 图形语法系统严谨,统计元素丰富 | | 工程分析/机器学习 | Python生态 | 库资源最全,社区支持强大 | | 低成本Matlab替代 | GNU Octave | 几乎兼容Matlab绘图命令 | > 注:所有推荐均为**免费开源工具**,其中Python和R在学术界/工业界应用最广。 --- ### 进阶组合方案 对于跨学科研究,可组合使用: ```mermaid graph TD A[数据采集] --> B(Julia/Python预处理) B --> C{R语言统计建模} C --> D[Python渲染3D结果] D --> E[LaTeX整合输出论文] ``` --- §§相关问题§§ 1. JuliaPython在科学计算可视化性能上有何差异? 2. 如何将Matlab绘图代码迁移到Python? 3. ggplot2能否实现动态交互可视化? </think> 基于您明确的需求——寻找与 **Matlab 和 Python 高度相似**且具有**优秀数据可视化能力**的科学计算软件/库,以下是严格对标需求的解决方案(含性能对比和代码示例): --- ### 核心推荐:科学计算导向的可视化工具 #### 1. **Julia + Plots.jl** - **与Matlab/Python相似度**: - 语法接近Matlab(如数组索引从1开始),支持数学表达式:$f(x) = e^{-x^2}\cos(2\pi x)$ - 类似Python的包管理系统(`Pkg.add("Plots")`) - **可视化亮点**: - 单行代码切换绘图后端(GR/PyPlot/Plotly),支持**实时物理模拟渲染** - 微分方程解的可视化比Matlab简洁(见示例) - **代码示例**: ```julia using DifferentialEquations, Plots function lorenz!(du,u,p,t) du[1] = 10.0*(u[2]-u[1]) du[2] = u[1]*(28.0-u[3]) - u[2] du[3] = u[1]*u[2] - (8/3)*u[3] end u0 = [1.0; 0.0; 0.0] tspan = (0.0, 100.0) prob = ODEProblem(lorenz!, u0, tspan) sol = solve(prob) plot(sol, vars=(1,2,3), title="Lorenz吸引子") # 3D相空间轨迹 ``` ![Lorenz吸引子](https://docs.sciml.ai/DiffEqDocs/stable/assets/lorenz.png) - **适用场景**:高性能数值计算+实时可视化[^1] #### 2. **R + ggplot2** - **与Python相似度**: - 数据框操作类似`pandas`(`dplyr`包),管道操作符`%>%`类似Python链式调用 - **可视化亮点**: - **图形语法**(Grammar of Graphics)实现图层叠加,比Matlab的`subplot`灵活 - 出版级统计图表(如带置信区间的回归图) - **代码示例**: ```r library(ggplot2) ggplot(mpg, aes(displ, hwy, color=class)) + geom_point() + geom_smooth(method="lm") + # 自动添加线性回归线 labs(title="引擎排量与油耗关系", x="排量(L)", y="高速油耗(mpg)") ``` ![ggplot2示例](https://ggplot2.tidyverse.org/logo.png) - **适用场景**:统计分析与多维数据可视化[^2] #### 3. **Matplotlib + SciPy生态(Python强化版)** - **Matlab迁移友好特性**: - `matplotlib`的`pyplot`接口刻意模仿Matlab绘图语法 - 支持Matlab风格的数学表达式:`r'$\frac{\partial u}{\partial t}$'` - **可视化强化组合**: ```python # 三维流体模拟可视化(Matplotlib + NumPy) import numpy as np import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation x = np.linspace(-3, 3, 100) y = np.linspace(-3, 3, 100) X, Y = np.meshgrid(x, y) Z = np.exp(-(X**2 + Y**2)) * np.sin(2*np.pi*X) fig = plt.figure() ax = fig.add_subplot(111, projection='3d') surf = ax.plot_surface(X, Y, Z, cmap='viridis') def update(frame): Z = np.exp(-(X**2+Y**2)) * np.sin(2*np.pi*X + frame/10) surf.set_array(Z.ravel()) return surf, ani = FuncAnimation(fig, update, frames=100, blit=True) plt.show() ``` - **优势**:完整替代Matlab工作流(计算+可视化)[^3] --- ### 关键能力对比表 | 功能 | Matlab | Julia+Plots | R+ggplot2 | Python+Matplotlib | |--------------------------|--------------|-------------|-----------|-------------------| | 语法相似度 | 基准 | ★★★★☆ | ★★☆☆☆ | ★★★★☆ | | 3D动态可视化 | ★★★☆☆ | ★★★★★ | ★★☆☆☆ | ★★★★☆ | | 统计图表精致度 | ★★☆☆☆ | ★★★☆☆ | ★★★★★ | ★★★☆☆ | | 大规模数据渲染速度 | ★★★☆☆ | ★★★★★ | ★★☆☆☆ | ★★★★☆ | | 开源/免费 | ✗ | ✓ | ✓ | ✓ | > 注:★越多表示在该维度越优秀 --- ### 迁移建议 1. **从Matlab转向Python**: - 使用`numpy`替代矩阵运算,`matplotlib`复用Matlab绘图习惯 - 安装`pip install mat4py`直接导入`.mat`文件 2. **从Python转向Julia**: - 利用`PyCall`包调用Python库,渐进式迁移 - 绘图命令差异: ```julia # Python: plt.plot(x, y, 'r--') # Julia: plot(x, y, linestyle=:dash, color=:red) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值