Julia 学习笔记——绘图基础
这篇笔记只关注 Julia 里最基础、最常用的科学计算绘图,不追求复杂可视化能力。
原因也很简单:如果只是画函数曲线、散点图、热图、简单布局,那么 Julia 自己已经够用;但如果进入更复杂的工程化可视化、交互式图形或者生态成熟度要求很高的场景,通常还是更容易回到 Python。
概述
Julia 绘图生态里最常见的入口大概有这几种:
Plots.jl:接口统一、上手简单,最适合基础笔记GR:常见默认后端,轻量、够快PyPlot.jl/PythonPlot.jl:更接近 Matplotlib 习惯Makie.jl:更强、更现代,但复杂度也明显更高
如果只是“科学计算里顺手画图”,最实用的选择还是:
- 直接使用
Plots.jl - 默认后端先用
GR
这篇笔记也只按这个思路整理。
安装与加载
最基本的安装:
1 | using Pkg |
使用时:
1 | using Plots |
如果需要显式指定后端:
1 | gr() |
基础使用里不用太在意后端细节,先能画出来最重要。
最简单的曲线图
直接给 y
1 | using Plots |
这时横坐标默认就是索引位置。
同时给 x 和 y
1 | x = 0:0.1:2pi |
这就是最普通的函数曲线写法。
常见图形
折线图
1 | x = 0:0.1:2pi |
散点图
1 | x = rand(50) |
柱状图
1 | bar(["A", "B", "C"], [3, 5, 2]) |
直方图
1 | histogram(randn(1000)) |
热图
1 | A = [sin(x) * cos(y) for x in 0:0.1:2pi, y in 0:0.1:2pi] |
对于二维标量场,可视化时热图通常已经够用了。
基本修饰
标题、坐标轴、图例
1 | x = 0:0.1:2pi |
最常用的参数通常就是:
titlexlabelylabellabel
线型、颜色、标记
1 | plot( |
基础场景里,知道这些参数能改样式就够了,不需要一开始就记很多。
一张图里画多条曲线
直接传多个序列
1 | x = 0:0.1:2pi |
plot!
Julia 绘图里常见的一个习惯是:
plot(...)创建新图plot!(...)往当前图上继续叠加
例如:
1 | x = 0:0.1:2pi |
对应地,很多函数也有带 ! 的版本:
scatter!bar!histogram!
这个风格和 Julia 其他地方的 ! 约定是统一的,也就是“修改已有对象”。
子图布局
最简单的做法:
1 | p1 = plot(0:0.1:2pi, sin.(0:0.1:2pi), title = "sin") |
这对于做最基础的对比图已经够用了。
保存图片
1 | p = plot(0:0.1:2pi, sin.(0:0.1:2pi)) |
也可以直接:
1 | savefig("sin.png") |
常见格式包括:
pngpdfsvg
如果只是插入笔记或报告,通常 png 和 pdf 就够了。
一个科学计算里常见的小例子
例如画一个函数和采样点:
1 | using Plots |
这已经很接近日常数值实验里最常见的使用方式了。
什么时候不必坚持 Julia 绘图
需要说明的是,Julia 绘图并不是不能做复杂图,而是如果你的目标只是“尽快把复杂可视化做完”,那么生态成熟度通常还是 Python 更占优势。
所以经验上可以简单分成:
- 基础科学计算绘图:Julia 直接画,够用而且方便
- 复杂数据可视化、定制化很重、和现有 Python 工作流深度绑定:直接回 Python
这其实是很务实的选择,没有必要为了“全都用 Julia”而增加额外成本。
小结
基础绘图用 Plots.jl 基本就够了,函数曲线、散点图、直方图、热图这些都很直接,叠加图就用带 ! 的版本。真正复杂的可视化没有必要硬留在 Julia,直接回 Python 往往更省事。
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
