数据可视化是将数据以图表和图形的形式呈现的过程,它是从数据中发现洞见和制作报告的强大工具。可能已经阅读过关于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中的一个可视化包。希望从这篇博客中学到了一些东西,这将对项目最有帮助。感谢阅读和耐心。祝好运!