logo

줄리아 Plots에서 플랏의 프로퍼티 목록 📂줄리아

줄리아 Plots에서 플랏의 프로퍼티 목록

설명

줄리아 Plots.jl에서는 플랏plot, 도표도 하나의 객체object이다. 빈 플랏을 그려 타입을 확인해보면 다음과 같다.

julia> using Plots

julia> p = plot()

julia> p |> typeof
Plots.Plot{Plots.GRBackend}

Plots.를 떼고 보면 Plot{GRBackend}인데, 원소의 자료형이 Float64인 벡터가 Vector{Float64}와 같이 표기되는 것과 같이 백엔드가 GR인 플랏이라는 뜻이다. Plot의 프로퍼티를 확인해보면 다음과 같다.

julia> p |> propertynames
(:backend, :n, :attr, :series_list, :o, :subplots, :spmap, :layout, :inset_subplots, :init)

각 프로퍼티는 그림의 속성attributes을 포함하는 벡터이거나 딕셔너리이거나 하는 식이다.

p.backend

플랏의 백엔드이다.

julia> p.backend
Plots.GRBackend()

p.attr

그림 속성attributes에 대한 딕셔너리이다. 아래와 같은 30개의 키-밸류를 포함한다.

julia> plot(rand(10, 4), layout = 4).attr
RecipesPipeline.DefaultsDict with 30 entries:
    :dpi                      => 100
    :background_color_outside => :match
    :plot_titlefontvalign     => :vcenter
    :warn_on_unsupported      => true
    :background_color         => RGBA{Float64}(1.0,1.0,1.0,1.0)
    :inset_subplots           => nothing
    :size                     => (600, 400)
    :display_type             => :auto
    :overwrite_figure         => true
    :html_output_format       => :auto
    :plot_titlefontfamily     => :match
    :plot_titleindex          => 0
    :foreground_color         => RGB{N0f8}(0.0,0.0,0.0)
    :window_title             => "Plots.jl"
    :plot_titlefontrotation   => 0.0
    :extra_plot_kwargs        => Dict{Any, Any}()
    :pos                      => (0, 0)
    :plot_titlefonthalign     => :hcenter
    :tex_output_standalone    => false
    :extra_kwargs             => :series
    :thickness_scaling        => 1
    :layout                   => 4
    :plot_titlelocation       => :center
    :plot_titlefontsize       => 16
    :plot_title               => ""
    :show                     => false
    :link                     => :none
    :plot_titlefontcolor      => :match
    :plot_titlevspan          => 0.05
    :fontfamily               => "sans-serif"

julia> plot(rand(10, 4), layout = 4).attr[:size]
(600, 400)

p.series_list

각 데이터의 그래프에 대한 속성의 딕셔너리를 원소로하는 벡터이다.

julia> plot(rand(10,5)).series_list
5-element Vector{Plots.Series}:

julia> plot(plot(rand(10, 4)), plot(rand(10, 3))).series_list
7-element Vector{Plots.Series}:

각 딕셔너리에 포함된 키-밸류는 다음과 같다.

julia> plot(rand(10, 2)).series_list[1].plotattributes
RecipesPipeline.DefaultsDict with 62 entries:
    :plot_object        => Plot{Plots.GRBackend() n=2}
    :subplot            => Subplot{1}
    :label              => "y1"
    :fillalpha          => nothing
    :linealpha          => nothing
    :linecolor          => RGBA{Float64}(0.0,0.605603,0.97868,1.0)
    :x_extrema          => (NaN, NaN)
    :series_index       => 1
    :markerstrokealpha  => nothing
    :markeralpha        => nothing
    :seriestype         => :path
    :z_extrema          => (NaN, NaN)
    :x                  => Base.OneTo(10)
    :markerstrokecolor  => RGBA{Float64}(0.0,0.0,0.0,1.0)
    :fillcolor          => RGBA{Float64}(0.0,0.605603,0.97868,1.0)
    :clims_calculated   => (NaN, NaN)
    :seriescolor        => RGBA{Float64}(0.0,0.605603,0.97868,1.0)
    :extra_kwargs       => Dict{Symbol, Any}()
    :z                  => nothing
    :series_plotindex   => 1
    :y                  => [0.477103, 0.00362131, 0.864524, 0.391488, 0.663659, 0.89787, 0.157973, 0.964416, 0.806635, 0.243531]
    :markercolor        => RGBA{Float64}(0.0,0.605603,0.97868,1.0)
    :y_extrema          => (0.00362131, 0.964416)
    :linewidth          => 1
    :group              => nothing
    :stride             => (1, 1)
    :permute            => :none
    :marker_z           => nothing
    :show_empty_bins    => false
    :seriesalpha        => nothing
    :smooth             => false
    :zerror             => nothing
    :arrow              => nothing
    :normalize          => false
    :linestyle          => :solid
    :contours           => false
    :bar_width          => nothing
    :bins               => :auto
    :markerstrokestyle  => :solid
    :weights            => nothing
    :z_order            => :front
    :fill_z             => nothing
    :markershape        => :none
    :markerstrokewidth  => 1
    :xerror             => nothing
    :bar_position       => :overlay
    :contour_labels     => false
    :hover              => nothing
    :primary            => true
    :yerror             => nothing
    :ribbon             => nothing
    :fillstyle          => nothing
    :line_z             => nothing
    :orientation        => :vertical
    :markersize         => 4
    :bar_edges          => false
    :quiver             => nothing
    :fillrange          => nothing
    :colorbar_entry     => true
    :series_annotations => nothing
    :levels             => 15
    :connections        => nothing

julia> plot(rand(10, 2)).series_list[1][:label]
"y1"

환경

  • OS: Windows11
  • Version: Julia 1.9.4, Plots v1.39.0