스케일 불일치를 제어하는 ​​방법은 무엇입니까?


9

몇 가지 다이어그램을 일종의 테이블에 모 으려고합니다. 나는 이것을 "인덱스 프린트" 라고 생각한다 . 사진 사람들은 한 번에 많은 사진을 검토해야 할 때 그렇게한다. 어쨌든, 이것은 코드입니다 :

main :: IO ()
main = mainWith @(Diagram B)
     $ (tile . fmap renderOne) examples

renderOne :: AnyGraph -> Diagram B
renderOne (AnyGraph gr) = ...

tile :: [Diagram B] -> Diagram B
tile xs = let columns = (ceiling . sqrt . fromIntegral . length) xs
          in (vcat . fmap hcat . List.chunksOf columns) xs

예상대로 작동하지 않습니다. 그러나 점진적으로 접근하겠습니다. 먼저, 단일 타일의 렌더링은 다음과 같습니다.

하나

이제 hcat네 개의 타일을 함께 합시다 .

hcat

두 번째 행 추가 : ( 변형 불변량 기능이 어떻게 두껍게 되는지 확인하십시오 .)

tile2

그리고 이것은 4 행으로 보이는 방식입니다.

타일

손에서!

화살표 헤드와 같은 스케일 불변 기능 은 그림 의 영역 에 비례하여 스케일링되는 것 같습니다 . 그러나이 경우 해당 기능의 크기를 조정하지 않고 다이어그램을 확장해야합니다. 어떻게하면 되나요?

답변:


5

측정 단위에 대한 사용자 매뉴얼 섹션 을 보려고합니다. 화살촉과 같은 것은 기본적으로 "정규화 된"단위로 측정되며 크기는 항상 전체 그림의 크기의 일정한 비율이되도록 조정됩니다. 유스 케이스를 올바르게 이해하면 로컬 단위를 대신 사용하고 싶을 것입니다. 사용하는 화살표 기능의 프라이밍 변형을 사용하고 다음과 같은 옵션 레코드 옵션을 제공하십시오.

(with & headLength .~ local 0.1)

그러나 숫자가 무엇이든 원하는대로 사진을 볼 수 있습니다. 화살표 옵션에 대한 자세한 내용은 화살표 자습서 를 참조하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.