Julia数据可视化

举报
jackwangcumt 发表于 2021/07/31 08:43:58 2021/07/31
【摘要】 常见的数据可视化就是绘制图形,比如折线图、柱状图、饼图、面积图、漏斗图以及散点图等。Julia作为一种高性能的科学计算语言,可非常方便的进行数学、工程等数据的处理。其中的数据可视化工具也是非常强悍的。本文就对Julia语言中的可视化工具Plots进行介绍。

    当我们处理数据时,为了发现和探索数据的关联以及内部的特征,往往需要对数据进行处理,并进行可视化,这样可以快速观察到数据的之间的规律。常见的数据可视化就是绘制图形,比如折线图、柱状图、饼图、面积图、漏斗图以及散点图等。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))

    此时会显示如下的图形:

1.jpg

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))

    此时会显示如下的图形:

2.jpg

4 饼状图

    饼状图是一种可以快速发现各组成部分占比的数据可视化工具,下面给出一个饼状图示例:

using Plots
x = ["C#","F#","Julia"]
y = [0.25,0.15,0.70]
pie(x, y, title="Pie Demo",l = 0.5)

    此时会显示如下的图形:

3.jpg

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.jpg

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.jpg

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.jpg

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]"))

    此时会显示如下的图形:

1.jpg

    更多图形可参考: 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

    此时会显示如下的图形:

jl_kWFzli1pSf.gif

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200