Julia数据可视化
当我们处理数据时,为了发现和探索数据的关联以及内部的特征,往往需要对数据进行处理,并进行可视化,这样可以快速观察到数据的之间的规律。常见的数据可视化就是绘制图形,比如折线图、柱状图、饼图、面积图、漏斗图以及散点图等。Julia作为一种高性能的科学计算语言,可非常方便的进行数学、工程等数据的处理。其中的数据可视化工具也是非常强悍的。本文就对Julia语言中的可视化工具Plots进行介绍。
1 Plots包安装
在使用前,需要安装对应的包文件。假设你已经成功安装了Julia SDK。那么可以打开Julia命令行工具,输入如下命令进行安装:
julia> import Pkg
julia> Pkg.add("Plots")
julia> Pkg.add("GR")
julia> Pkg.add("PGFPlotsX")
julia> Pkg.add("PlotlyJS"); Pkg.add("ORCA")
julia> Pkg.add("PyPlot")
julia> Pkg.add("UnicodePlots")
julia> Pkg.add("InspectDR")
julia> Pkg.add("StatsPlots")
julia> Pkg.add("GraphRecipes")
这个过程会分析包的依赖性,并从本地仓库中进行查看,会根据需要进行下载。这个过程可能会比较耗时,需要从网络上进行包文件的下载。下载后,还需要进行一些初始化的工作,它会将包文件进行预编译处理。
julia> using Plots
julia> using StatsPlots
julia> using GraphRecipes #或其他包
2 折线图
折线图可以观察两个变量之间的关系,是非常常用的一种数据可视化工具,下面给出一个折线图示例:
using Plots
x = -2pi:0.1:2pi
y1 = cos.(x)
y2 = sin.(x)
#绘图,默认中文会乱码
plot(x, y1,
c="blue",
linewidth=2,
title="Line Demo",
xlabel="x",
ylabel="sin(x) & cos(x)")
plot!(x, y2, c="red", line=:dash)
plot!(xlims=(-2pi,2pi), ylims=(-2, 2))
此时会显示如下的图形:
3 柱状图
柱状图也是非常常用的一种数据可视化工具,下面给出一个柱状图示例:
using Plots
ticklabel = string.(collect('a':'l'))
bar(1:12, orientation=:v, xticks=(1:12, ticklabel), yflip=false)
plot!(xlims=(0,15), ylims=(0,20))
此时会显示如下的图形:
4 饼状图
饼状图是一种可以快速发现各组成部分占比的数据可视化工具,下面给出一个饼状图示例:
using Plots
x = ["C#","F#","Julia"]
y = [0.25,0.15,0.70]
pie(x, y, title="Pie Demo",l = 0.5)
此时会显示如下的图形:
5 散点图
散点图是一种可以快速发现数据分布区域的数据可视化工具,比如是否有聚集性,下面给出一个散点图示例:
using Plots
using Random
Random.seed!(2021)
n = 30
x = rand(n)
y = rand(n)
ms = rand(30)*30
scatter(x, y, title="Scatter Demo",markersize=ms)
此时会显示如下的图形:
6 等线图
等线图就是将地表高度相同的点连成一环线直接投影到平面形成水平曲线,不同高度的环线不会相合,下面给出一个等线图示例:
using Plots
f(x,y) = x^2 + y^2
x = repeat(range(0, stop=2, length=70), 1, 70)
y = repeat(range(0, stop=2, length=70), 1, 70)'
contour( f.(x, y) ,title="Contour Demo")
此时会显示如下的图形:
7 3D Surface 图
有时候,我们需要绘制3D图形,下面给出一个3D图示例:
using Plots
f(x,y) = x^2 + y^2
x = -20:20
y = x
surface(x, y, f,title="3D Surface Demo")
此时会显示如下的图形:
8 Latex支持
图形中涉及的公式,有时候需要按照数学的方式进行显示,这里支持Latex可以解决这类的问题,下面给出一个示例:
using Plots
using LaTeXStrings, Measures
fib = zeros(12);
for i = 1:12
fib[i] = (((1+sqrt(5))/2)^i - ((1-sqrt(5))/2)^i)/sqrt(5);
end
plot(fib,
marker=:circle,
xlabel=L"n",
ylabel=L"F_n",
title ="LaTeX Demo",
annotation=(5, 100, L"F_n = \frac{1}{\sqrt{5}} \left[\left( \frac{1+\sqrt{5}}{2} \right)^n - \left( \frac{1-\sqrt{5}}{2} \right)^n \right]"))
此时会显示如下的图形:
更多图形可参考: https://goropikari.github.io/PlotsGallery.jl
8 动画支持
数学中公式中的参数变动,会如何影响另外一个变量,通过图形动画可以更加直观的进行显示,下面给出一个动画绘图示例:
using Plots
@gif for i in 0:30
plot(sin, 0, i * pi,title=string("sin(",i,"pi)"))
end
此时会显示如下的图形:
- 点赞
- 收藏
- 关注作者
评论(0)