es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo hacer más gruesos los ejes x e y con Plots (Julia)?

¿Cómo puedo hacer que las líneas de los ejes x e y sean más gruesas en Julia Plots? ¿Existe una manera simple de lograr esto?

Ejemplo mínimo:

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()]  # para "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)

Lleva a:

https://i.stack.imgur.com/9wIa9.png

Las publicaciones que he encontrado hasta ahora sugieren que esto no era posible:

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

¿Es todavía así?

El código real para mi trama es mucho más largo. No me gustaría volver a escribir todo en una biblioteca de trazado diferente.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Después de revisar la documentación y los mensajes disponibles, parece que no hay una manera directa de ajustar el espesor de los ejes x- e y- directamente en Julia Plots por ahora. Sin embargo, una posible solución es usar la opción framestyle en la función plot para personalizar el marco del gráfico, que incluye los ejes. Por ejemplo, establecer framestyle =:box dibujará un cuadro rectangular alrededor del gráfico con líneas gruesas para los lados superior, inferior, izquierdo y derecho.

    Aquí hay un MWE actualizado que implementa este enfoque:

    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()]  # para "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, framestyle=:box, linewidth=2)
    

    Tenga en cuenta que también agregamos la opción linewidth para controlar el espesor de la línea del marco del cuadro. Puede ajustar este valor según su preferencia.

    Si bien esto puede no ser una solución ideal, debería permitirle personalizar la apariencia de los ejes sin tener que cambiar a otra biblioteca de gráficos o modificar extensamente su código existente.

Comments are closed.