Julia语言的数据可视化库Plots.jl

数据可视化是将数据以图表和图形的形式呈现的过程,它是从数据中发现洞见和制作报告的强大工具。可能已经阅读过关于Python中的数据可视化库,如seaborn、matplotlib、plotly等。但对于机器学习的Python库,请点击了解更多信息。

然而,在这篇博客中,将探索一种新的编程语言Julia及其数据可视化库Plots.jl。希望这篇文章能为提供Julia数据可视化库的深入知识。让开始吧!

  • Plots.jl
  • 后端
  • 安装
  • 初始化包
  • 折线图
  • 图表属性
  • 绘图后端
  • 散点图
  • 组合多个图表为子图
  • 分布图
  • 小提琴图
  • 3D图表

Plots.jl是一个开源的Julia包,用于数据可视化。它是一个绘图元包,用于绘图。然而,它本身并不是一个绘图包。这个包使用一些其他绘图库,称为后端,如PyPlot、GR、PGFPlotsX、Plotly等。这个包理解给它的命令,并使用其他库进行绘图。

这个包的一些主要优点如下:

  • 直观
  • 灵活
  • 轻量级
  • 强大
  • 智能
  • 一致
  • 简洁

Plots.jl是一个非传统的绘图库。它不执行“绘图后端”本身,它是一个绘图API。API可以通过配方有效地扩展。它是一个用于绘图的元包。它理解给它的命令,并使用一些其他库,称为后端。Plots.jl使用其他绘图库作为后端进行可视化。

以下是Julia中存在的后端库:

PyPlot Plotly/PlotlyJS GR PGFPlotsX InspectDR UnicodePlots HDF5

如果需要...

...那么使用...

特性

PyPlot, Plotly(JS), GR

速度

GR, InspectDR

交互性

Plotly(JS), PyPlot, InspectDR

美观

Plotly(JS), PGFPlots/ PGFPlotsX

REPL绘图

UnicodePlots

3D图表

PyPlot, GR, Plotly(JS)

GUI窗口

GR, PyPlot, PlotlyJS, InspectDR

小足迹

UnicodePlots, Plotly

plot+data -> .hdf5文件

HDF5

首先,将安装Plots.jl包。打开Julia终端并输入以下命令:

import Pkg Pkg.add("Plots")

要获取最新功能更新,请键入此命令:

Pkg.pkg"add Plots#master"

之后,需要至少安装一个绘图包(至少安装一个后端)。查看以下命令以安装相应的后端库(可以安装任意数量的后端):

Pkg.add("GR") Pkg.add("PGFPlotsX") Pkg.add("PyPlot") Pkg.add("UnicodePlots") Pkg.add("InspectDR")

有关后端的完整信息请点击。如果想添加Plots生态系统中的更多扩展,那么输入以下命令(这是可选的):

Pkg.add("StatsPlots") Pkg.add("GraphRecipes")

安装所需库后,下一步是使用。查看以下命令以初始化Plots:

using Plots

选择一个后端使用以下命令:

pgfplotsx() pyplot() # 后端以小写名称选择!

折线图是最常见的基本图表之一。使用折线图可视化单维向量。它需要两个轴(x和y)。例如,假设有一个一维向量x,值范围从1到10。再次使用rand()函数创建y,这是一个单维向量,用于生成随机值。

因此,使用Plots,可以调用plot()函数来绘制x和y之间的折线图。例如:

using Plots x = 1:10; # x: x轴上的绘图数据 y = rand(10); # y: y轴上的绘图数据 plot(x, y) # 绘制折线图

最终视觉效果取决于使用的后端。将在后面看到这些后端如何改变最终图表。

在Plots.jl中,每一列都被视为一个系列。因此,可以通过将值表示为矩阵的形式来绘制多条线,矩阵的每一列都是最终图表中显示的单独线条。

查看以下代码,对于2列即两条线。在rand()函数中传递了更多的值,以便得到两组随机值。

x = 1:10; y = rand(10, 2) # 2列意味着最终图表中有两条线 plot(x, y)

可以通过使用plot!命令来改变图表对象来创建多条线。查看以下代码:

k = rand(10) plot!(x, k)

在上一节中,学习了折线图,所以完成了吗?不!应该为图表添加样式以获得更好的外观。因此,可以使用称为属性的修饰符来为图表添加样式。有关属性的更多详细信息,请查看属性。

根据Plots.jl,位置参数被视为输入数据,关键字参数作为属性。因此,在本节中,将详细查看一些图表属性。

示例:可以增加线宽(lw),添加标题(title),并更改图例名称(label)。查看以下代码以应用上述所有讨论的更改:

x = 1:10; y = rand(10, 2) # 2列意味着最终图表中有两条线 plot(x, y, title = "两条线", label = ["线1" "线2"], lw = 4)

还可以借助修饰符函数应用任何属性。例如,要为x轴添加标签,可以使用xlabel!。查看以下代码:

xlabel!("x标签")

有关更多信息,请查看此。

正如之前讨论的,Plots.jl使用许多不同的绘图库作为后端进行绘图。每个后端都有其独特的功能,如在后端部分所示的所有这些详细信息。

在开始绘图时,图表使用了默认后端。默认后端取决于在Julia中安装了哪个绘图库。如果还没有安装任何后端,这将使用Plotly在浏览器中绘图,或使用UnicodePlots.jl在REPL中绘图。然而,假设需要一个标准的绘图后端,它将绘制到一个漂亮的GUI或Juno的图表表中。

为此,需要一个支持这些功能的后端。一些常见的后端是PyPlot和GR。要引入这些后端,需要安装它们使用(Pkg.add(“BackendPackage”))。可以通过使用后端名称的小写来明确选择要绘制的后端。

让看一个使用两个不同后端的例子,即Plotly和GR。

using Plots x = 1:10; y = rand(10, 2) # 2列意味着最终图表中有两条线 plotly() # 这里使用Plotly后端 plot(x, y) using Plots x = 1:10; y = rand(10, 2) # 2列意味着最终图表中有两条线 gr() # 这里使用GR后端 plot(x, y)

每个后端都有其感觉和优势。有些更快,有些提供交互性,有些则完全能够处理大型数据集。保存图表的格式也取决于后端。例如,Plotly只保存为.png,而GR保存图表为PDF和矢量图形。

使用savefig命令保存图表:

savefig("Example_plot.png") # 将图表保存为.png savefig(k, "Example_plot.pdf") # 将k作为.pdf矢量图形保存

有关更多信息,请查看。

到目前为止,已经详细讨论了折线图。但是还有很多其他方法可以表示数据集。

在Plots.jl中,绘制这些其他类型图表的方式称为系列类型。例如,线条是一种系列类型,散点图是另一种系列类型,等等。散点图有助于找到数据集不同特征之间的模式。

可以使用seriestype属性在plot()函数中更改系列类型。让看一个散点图的例子。

using Plots gr() # 使用GR后端 plot(x, y, seriestype = :scatter) # 查看seriestype属性值

注意:还可以使用方法来绘制散点图。查看以下代码:

scatter(x, y)

有关属性的更多信息,请查看。

可以使用布局将多个图表组合为子图。有很多方法可以做到这一点,将展示两种基本策略来制作简单的布局。有关布局的更多信息,请查看。

方法1:使用布局拆分系列

y = rand(10, 4) # 4个数据系列 plot(x, y, layout = (4, 1)) # 4行图表,每行有1个系列

方法2:在图表对象上的布局

p1 = plot(x, y) # 折线图代码 p2 = scatter(x, y) # 散点图代码 p3 = plot(x, y, lw=3) p4 = histogram(x, y) # 四个直方图 plot(p1, p2, p3, p4, layout = (2, 2))

还可以利用Distribution.jl绘制分布曲线。查看以下命令以绘制分布曲线:

using Distributions plot(Normal(3, 5), lw = 4)

它还提供了小提琴图。查看以下代码以绘制小提琴图:

y = rand(100, 4) violin(y)

到目前为止,已经讨论了2D图表。但现在将提供一些3D图表的例子。它提供了一些3D图表,如移动波、3D表面等。查看以下示例以获取更多详细信息:

洛伦兹吸引子

表面

有关更多信息,请查看官方文档。

在这篇文章中,详细讨论了Plots.jl,Julia中的一个可视化包。希望从这篇博客中学到了一些东西,这将对项目最有帮助。感谢阅读和耐心。祝好运!

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485