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