原文:
www.kdnuggets.com/2023/02/3-julia-packages-data-visualization.html
作者提供的图片
Julia 编程语言在数据可视化工具方面取得了新进展,这些工具类似于 Python 的 matplotlib 和 R 的 ggplot。这些包提供了类似 C++ 的速度和开箱即用的并行处理。因此,当你需要可视化大型数据集时,这非常有用。
在本博客中,我们将学习 Plots.jl、Gadfly.jl 和 VegaLite.jl 的代码示例。所以,让我们从安装所需的包开始。
import Pkg; Pkg.add(["RDatasets","Plots","Gadfly","VegaLite"])
Plots.jl 是 Julia 中一个强大的可视化工具。它是一个元包,使用 GR、PythonPlot、PGFPlotsX 或 Plotly 作为后端。如果某个后端不支持你需要的功能,你可以随时切换到另一个而无需更改代码。
Plots.jl 是一个轻量级、直观、简洁、灵活且一致的绘图包。
要显示正弦波,我们必须导入包,然后创建 x 和 y1 变量。
-
x: 从 0 到 10 的范围。
-
y: sin(x)
要显示折线图,我们只需将 x 和 y 参数提供给Plots.plot
函数。
using Plots
x = range(0, 10, length=100)
y1 = sin.(x)
Plots.plot(x, y1)
你可以使用Plots.plot!
函数重叠图表。这将显示相同轴的两个图表。
y2 = @. cos(x)² - 1/2
Plots.plot!(x, y2)
让我们绘制一个复杂的条形图,为此我们将首先从RDatasets
包中导入cars
数据集。
using RDatasets
cars = dataset("datasets", "mtcars")
first(cars,5)
然后,我们将使用Plots.bar
函数来表示每个模型的“每加仑的英里数”和 QSec。
我们根据需求定制了函数:
-
重命名了标签。
-
添加标题。
-
将 x 刻度旋转 45 度。
-
限制图表的大小。
-
更改图例的位置。
-
显示所有车型。
-
限制 y 刻度。
Plots.bar(cars.Model,
[cars.MPG,cars.QSec],
label = ["Miles per Gallon" "QSec"],
title = "Models-Miles per Gallon and Qsec",
xrotation = 45,
size = [600, 600],
legend =:topleft,
xticks =:all,
yticks =0:25)
对于绘制饼图,我们只需将标签和值添加到Plots.pie
函数中。我们还添加了标题和线条宽度。
x = ["A","B","C","D"]
y = [0.1,0.2,0.4,0.3]
Plots.pie(x,y,title ="KDnuggets Readers" ,l = 0.5)
Gadfly.jl 是一个流行的统计绘图和数据可视化工具。它深受 R 的 ggplot 库的影响。
关键特性:
-
它与 Ijulia 和 Jupyter Notebook 兼容。
-
渲染高质量的图表为 SVG、PNG、Postscript 和 PDF 格式。
-
它与 DataFrames.jl 的集成非常强大。
-
它还提供了如平移、缩放和切换等交互功能。
-
支持大量常见的绘图类型。
为了绘制男性和女性的历史数据,我们将导入伦敦出生率数据。之后,我们将使用 stack
函数将宽格式数据转换为长格式。
这将给我们年、变量和数值列。变量将是男性或女性,数值将是出生率。
births = RDatasets.dataset("HistData", "Arbuthnot")[:,[:Year, :Males, :Females]]
stacked_birth = stack(births, [:Males, :Females])
first(stacked_birth,5)
我们正在堆叠这些列,以便可以显示两个不同颜色的图表。
Gadfly.plot
函数需要数据集、x 和 y 变量、颜色以及绘图类型。在我们的案例中,我们显示的是线图。
using Gadfly
Gadfly.plot(stacked_birth, x=:Year, y=:value, color=:variable,
Geom.line)
在示例中,我们将设置默认大小,并根据变量和数值显示箱型图。我们使用相同的函数,但有不同的绘图类型和主题。
注意: 你可以通过查看文档 Themes · Gadfly.jl 来了解更多关于主题的信息。
set_default_plot_size(8cm, 12cm)
Gadfly.plot(
stacked_birth,
x=:variable,
y=:value,
Geom.boxplot,
Theme(default_color="red")
)
VegaLite.jl 是一个用于 Julia 编程语言的交互式绘图包。它基于 Vega-Lite,并具有与 Altair 相似的功能,Altair 是一个交互式、简单且快速的 Python 库。
在示例中,我们导入 VegaLite 并将汽车数据集传递给 @vlplot
函数以显示点图。
在我们的案例中,我们提供了:
-
绘图类型。
-
X 和 y 变量。
-
将 ‘Cyl’ 列添加到颜色参数中。
-
设置图形的宽度和高度。
注意: 我们通过在列名前添加 :n
将整数转换为分类值。在我们的案例中,它是“Cyl:n”。
using VegaLite
cars |> @vlplot(
:point,
x=:HP,
y=:MPG,
color="Cyl:n",
width=400,
height=300
)
在第二个示例中,我们将绘制气缸类型的条形图。对于 x 参数,我们将使用“Cyl”作为类别,对于 y,我们使用“count()”,它将计算“Cyl”列中类别的数量。
@vlplot(
data=cars,
height=350,
width=300,
:bar,
x="Cyl:n",
y="count()",
)
Abid Ali Awan (@1abidaliawan) 是一名认证的数据科学专家,喜欢构建机器学习模型。目前,他专注于内容创作和撰写关于机器学习和数据科学技术的技术博客。Abid 拥有技术管理硕士学位和电信工程学士学位。他的愿景是利用图神经网络为那些在心理健康方面挣扎的学生构建 AI 产品。
1. Google 网络安全证书 - 快速进入网络安全职业生涯
2. Google 数据分析专业证书 - 提升你的数据分析技能
3. Google IT 支持专业证书 - 支持组织的 IT 需求