这篇文章是 Julia 的 Plots 包的各种属性的汇总,实际上应该算是文档里面的一个翻译和整理。
1/ 属性
1.1/ 属性的介绍
在 Plots 上,输入的数据都有固定的位置(例如,在 plot(y)
里面的 y
),而属性是以关键词的方式传递的(例如,plot(y, color=:blue)
)。在 REPL 中执行 using Plots
之后,可以使用 plotattr()
打印 series, plots, subplots, axes 的所有的属性进行查看:
# Valid Operations
plotattr(:Plot)
plotattr(:Series)
plotattr(:Subplot)
plotattr(:Axis)
获得属性列表后,您可以使用特定属性的别名或调查特定属性以打印该属性的别名及其描述。
julia> # Specific Attribute Example
plotattr("size")
size {NTuple{2,Int}}
sizes, windowsize, wsize
(width_px, height_px) of the whole Plot
Plot attribute, default: (600, 400)
1.2/ 别名(Aliases)
关键字可以通过别名机制(alias mechanic),或者可以叫做「缩写」,采用一系列值。 例如,plot(y, color=:blue)
实际上被解释为 plot(y, seriescolor=:blue)
。 每个属性都有许多别名(请参见下面的图表),可以使用这些别名来避免因忘记参数名称而不断查找绘图 API 文档的痛苦。 c
、color
和 seriescolor
都表示相同的意思,实际上它们最终会转换为更精确的属性 linecolor
、markercolor
、markerstrokecolor
和 fillcolor
(如果需要改变这些属性的话,也可以覆盖它们)。
一些建议:如果只是为了某个例子的可视化,不会大量重复的用到,可以用别名去指定关键词,但是对于一些长期代码,需要稳定性的代码(像是代码库),最好还是使用属性的全称,避免混淆。
1.3/ 魔术参数(Magic Arguments)
一些参数包含用于同时设置许多相关参数的智能简写。Plots 使用类型检查和多重分派来巧妙地「找出」哪些值适用于哪个参数。 传入一组值。 在处理之前,单个值将首先包装在一个元组中。
axis (and xaxis/yaxis/zaxis)
传入一个 xaxis
参数设定的元组可以快速地定义 xlabel, xlims, xticks, xscale, xflip, xtickfont
,下面的两个表达是等价的:
plot(y, xaxis = ("my label", (0,10), 0:0.5:10, :log, :flip, font(20, "Courier")))
plot(y,
xlabel = "my label",
xlims = (0,10),
xticks = 0:0.5:10,
xscale = :log,
xflip = true,
xtickfont = font(20, "Courier")
)
yaxis
和zaxis
的工作机制是类似的,而如果使用axis
则会对所有的坐标轴都起作用。
给参数 xticks
(或 yticks
、zticks
)传入一个元组来改变坐标轴刻度和标签的位置:
plot!(xticks = ([0:π:3*π;], ["0", "\\pi", "2\\pi"]))
yticks!([-1:1:1;], ["min", "zero", "max"])
line
为线条设置属性。缩写:l
. 以下表达等价:
plot(y, line = (:steppre, :dot, :arrow, 0.5, 4, :red))
plot(y,
seriestype = :steppre,
linestyle = :dot,
arrow = :arrow,
linealpha = 0.5,
linewidth = 4,
linecolor = :red
)
fill
区域填充的属性设置。缩写:f, area
. 以下表达等价:
plot(y, fill = (0, 0.5, :red))
plot(y,
fillrange = 0,
fillalpha = 0.5,
fillcolor = :red
)
marker
为 marker 设置属性。缩写:m, mark
. 以下表达等价:
scatter(y, marker = (:hexagon, 20, 0.6, :green, stroke(3, 0.2, :black, :dot)))
scatter(y,
markershape = :hexagon,
markersize = 20,
markeralpha = 0.6,
markercolor = :green,
markerstrokewidth = 3,
markerstrokealpha = 0.2,
markerstrokecolor = :black,
markerstrokestyle = :dot
)
1.4/ 需注意的参数
以下一些参数可能是不常注意到的重要参数:
scatter(y, thickness_scaling = 2) # 将字体大小和线宽增加 2 倍
# 适合演示文稿和海报
# 如果后端不支持此功能,请使用缩放默认字体
# 大小的函数 scalefontsizes(2)。
scatter(y, ticks=:native) # 让后端自己计算刻度。
# 如果使用交互式后端执行鼠标缩放的话推荐这样
scatter(rand(100), smooth=true) # 将回归线添加到图中