5

如何在 Julia Plots中使 x 轴和 y 轴的线更粗?有没有一种简单的方法可以实现这一目标?

MWE:

using Plots

Nx, Ny = 101,101
x = LinRange(0, 100, Nx)
y = LinRange(0, 100, Ny)

foo(x,y; x0=50, y0=50, sigma =1) = exp(- ((x-x0)^2 + (y-y0)^2)/(2*sigma^2)  )
NA = [CartesianIndex()]  # for "newaxis"
Z = foo.(x[:,NA], y[NA,:], sigma=10);

hm = heatmap(x, y, Z, xlabel="x", ylabel="y", c=cgrad(:Blues_9), clim=(0,1))
plot(hm, tickfontsize=10, labelfontsize=14)

导致: 电流输出

到目前为止,我发现的帖子表明这是不可能的:

  1. https://discourse.julialang.org/t/plots-jl-modify-frame-thickness/24258/4
  2. https://github.com/JuliaPlots/Plots.jl/issues/1099

这还是这样吗?

我的情节的实际代码要长得多。我不想在不同的绘图库中重写所有这些。

4

1 回答 1

3

目前,Plots.jl 中似乎没有轴厚度的属性。

作为一种解决方法,您可以使用属性thickness_scaling来缩放所有内容的粗细:线条、网格线、轴线等。由于您只想更改轴的粗细,因此您需要缩小其他的粗细。这是您使用 pyplot 后端执行此操作的示例代码。

using Plots
pyplot() # use pyplot backend

Nx, Ny = 101,101
x = LinRange(0, 100, Nx)
y = LinRange(0, 100, Ny)

foo(x,y; x0=50, y0=50, sigma =1) = exp(- ((x-x0)^2 + (y-y0)^2)/(2*sigma^2)  )
NA = [CartesianIndex()]  # for "newaxis"
Z = foo.(x[:,NA], y[NA,:], sigma=10);

hm = heatmap(x, y, Z, xlabel="x", ylabel="y", c=cgrad(:Blues_9), clim=(0,1))
plot(hm, tickfontsize=10, labelfontsize=14) # your previous plot

# here is the plot code that shows the same plot with thicker axes on a new window
# note that GR backend does not support `colorbar_tickfontsize` attribute
plot(hm, thickness_scaling=2, tickfontsize=10/2, labelfontsize=14/2, colorbar_tickfontsize=8/2, reuse=false)

有关绘图属性的更多信息,请参阅Julia Plots 文档

于 2021-11-28T18:15:55.447 回答