Plates의surface plot에 매핑된 행렬 색상

3165 단어 JuliaPlots.jlPyPlot

Introduction


Juria에서 3D 서핑 그림을 만들고 행렬로 서핑의 색깔을 지정하다가 걸려 넘어졌을 때의 비망록.
Julia에서 Plats를 사용하면 보통 3D surface로 공을 그리고 z의 값에 따라 색을 비춘다. 왼쪽 그림에서 보듯이 본문의 목적은 공을 오른쪽 그림처럼 다른 행렬에 지정하는 것이다.

운영 환경

  • Windows 10 Pro
  • Julia 1.5.3
  • VS Code
  • 사이트 축소판 그림


    다른 사이트에서도 같은 방법을 찾는 질문이 있었다. 결국 첫 번째 링크에 대한 대답은 답이 나왔다. Plaots를 사용하지 않고 PyPlat을 사용한 경우 세 번째 링크에 대한 대답이 있었다.
    - Plots.jl - Map surface color to matrix
    - Julia PyPlot: plot 3D surface with as face colors the norm of surface gradient
    - gizmaa/Plot_Examples.md

    소스 코드


    여기 사이트(gizmaa/Plot_Examples.md)를 참고하여 구체 코드와 표면에 비치는 무작위 값 행렬을 준비하세요.
    using Plots
    pyplot() # pyplotをバックエンドに指定
    
    u = range(0.0,2pi,length=100);
    v = range(0.0,pi,length=100);
    
    lu = length(u);
    lv = length(v);
    
    x = zeros(lu,lv);
    y = zeros(lu,lv);
    z = zeros(lu,lv);
    
    colors = zeros(lu,lv);
    
    colortube = 0.001:0.001:1.0;
    
    for uu=1:lu
    for vv=1:lv
    x[uu,vv]= cos(u[uu])*sin(v[vv]);
    y[uu,vv]= sin(u[uu])*sin(v[vv]);
    z[uu,vv]= cos(v[vv]);
    end
    end
    
    for uu=1:lu
        for vv=1:lv
            colors[uu,vv]=rand(colortube);
        end
    end
    
    플래시로 행렬을 파도타기 그림의 색으로 비추려면 키워드fill_z에 행렬을 지정해야 한다고 합니다.
    # show results
    plt = plot(x,y,z,
            fill_z=abs.(colors),
            st=:surface,
            colorbar_title="Color",
    )
    display(plt)
    
    그래서 상술한 오른쪽 그림의 줄거리가 생성되었다. 이fill_z의 키워드를 찾기 위해 나는 매우 많은 신경을 썼다. facecolors 등등 나는 많은 시도를 했다.
    키워드를 모를 경우 Plates를 사용하십시오.jl의 소스 코드만 볼 수 있습니까? 평소에 Doocumentation에 설치된 MATLAB의 사용자이기 때문에 다른 언어의 찾기 방법을 잘 모릅니다.
    Plaots를 사용하여 만든 차트는 실행 중인 소스 파일과 같은 이름으로 저장된 다음 코드를 사용합니다.
    # save
    runningfilename = splitext(splitpath(@__FILE__)[end])[1]
    savefig(plt,runningfilename)
    

    PyPlat의 경우


    상기사이트 축소판 그림의 세 번째 종류와 같이 Pyplot의 경우 다음과 같이 그릴 수 있다. colors의 모양은 내가 MATLAB에서 자주 사용하는 모양(망상망격의 지정)과 다르기 때문에 나는 사용하지 않는다.
    # reproduced from https://gist.github.com/gizmaa/7214002#3d-surf-plot
    using PyPlot
    
    #######
    omit definition of u,v
    #######
    
    colors = zeros(lu,lv,3) ;
    
    colortube = 0.001:0.001:1.0;
    
    for uu=1:lu
    for vv=1:lv
    x[uu,vv]= cos(u[uu])*sin(v[vv]);
    y[uu,vv]= sin(u[uu])*sin(v[vv]);
    z[uu,vv]= cos(v[vv]);
    end
    end
    
    for uu=1:lu
    for vv=1:lv
    for ii=1:3
    colors[uu,vv,ii]=rand(colortube);
    end
    end
    end
    
    fig=surf(x,y,z,facecolors=colors);
    gcf()
    

    좋은 웹페이지 즐겨찾기