标签: haskell-diagrams

How to control scale invariance?

I am trying to put several diagrams together in a kind of a table. I think this is called "index print", photography people do that when they have to review many photographs at once. Anyway, this is the code:

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 …
Run Code Online (Sandbox Code Playgroud)

haskell haskell-diagrams

9
推荐指数
1
解决办法
66
查看次数

如何将图库与GTK drawables一起使用?

我正在尝试学习如何使用图表库和Cairo/GTK后端绘制图表.我有一个空白的窗口出现,但我的绘图不会呈现.我究竟做错了什么?

module Main where

import Control.Monad.Trans (liftIO)
import Graphics.UI.Gtk
import Diagrams.Backend.Cairo
import Diagrams.Backend.Cairo.Gtk
import Diagrams.Prelude

main :: IO ()
main = do
  initGUI
  window <- windowNew
  canvas <- drawingAreaNew
  canvas `on` sizeRequest $ return (Requisition 1000 1000)
  set window [ containerBorderWidth := 10,
               containerChild := canvas ]
  canvas `on` exposeEvent $ renderFigure
  onDestroy window mainQuit
  widgetShowAll window
  mainGUI


renderFigure :: EventM EExpose Bool
renderFigure = do
   win <- eventWindow
   liftIO $ renderToGtk win $ toGtkCoords figure
   -- liftIO …
Run Code Online (Sandbox Code Playgroud)

gtk haskell haskell-diagrams

8
推荐指数
1
解决办法
937
查看次数

修复arrowShaft(图表库)

我使用和制作了一个数据存储符号.中间有红点的那个.B.differenceB.union

dataStorage :: Diagram B
dataStorage =  (strokePath $ B.difference Winding  combined  block1) # translateX (-0.3)
  where block1 = (circle 0.5)  # scaleX 0.5 # translateX (-1)
        block2 = rect 2 1
        block3 = (circle 0.5)  # translateX (1)
        combined = B.union Winding $ block2 <> block3
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我现在已经尝试了好几个小时但是不能Previous Estimate在这个符号和内部之间写出 一个箭头Signal Decomposition (SSA).目标是从符号外部的中心开始绘制箭头.欢迎任何帮助.非常感谢你.

编辑1:添加了想要的结果.

在此输入图像描述

这是完整的代码.

{-# LANGUAGE NoMonomorphismRestriction #-}
{-# LANGUAGE FlexibleContexts          #-}
{-# LANGUAGE TypeFamilies              #-}

module FlowChartTR where

import System.Process
--import …
Run Code Online (Sandbox Code Playgroud)

haskell haskell-diagrams

7
推荐指数
1
解决办法
138
查看次数

Haskell图:我怎样才能让文字更大?

我正在使用图表 haskell绘图框架.下面的代码用于生成橙色六边形,文本"(0,0)"叠加在其上.不幸的是,文字很小.我试图通过修改它的大小来扩大它rect,但没有运气.

import Diagrams.Prelude
import Diagrams.Backend.SVG.CmdLine

diagram = mconcat [ text "(0,0)" <> rect 8 1,
                    hexagon 20 # lw 0.02 # fc orange # rotateBy (1/4) ]

main = defaultMain (pad 1.1 diagram)
Run Code Online (Sandbox Code Playgroud)

svg haskell haskell-diagrams

5
推荐指数
1
解决办法
607
查看次数

Haskell Diagrams双箭头

我现在正在我的图书馆学习论文,我需要你帮助制作新的线型.Bellow有单行代码,双头箭头:< - >.我想问一下是否有能力从line(line = trailFromOffsets [unitX])到doubleline,看起来像这样:=,带有它的箭头看起来像这样<=>?如果有能力做到这一点,我会非常感谢一个例子!先感谢您!

line = trailFromOffsets [unitX]
doubleHeadArrow  = (with & arrowHead  .~ spike & headColor .~ black & headSize .~ 0.4
                         & arrowTail .~ spike' & tailColor  .~ black & tailSize .~ 0.4
                         & arrowShaft .~ line) 
Run Code Online (Sandbox Code Playgroud)

haskell haskell-diagrams

5
推荐指数
1
解决办法
317
查看次数

了解仅出现在返回类型中的类型变量

我在理解如何理解和使用仅出现在函数的返回类型中的类型变量时遇到了一些麻烦.

我正在尝试使用diagram-cairo逐个像素地比较两个图表.该renderToList函数的类型:

renderToList :: (Ord a, Floating a) => Int -> Int -> Diagram Cairo R2 -> IO [[AlphaColour a]]
Run Code Online (Sandbox Code Playgroud)

返回列表清单AlphaColour a.记住,轴承a(Ord a, Floating a),我想我可以对这些使用数学和比较操作AlphaColour a值:

import Diagrams.Prelude
import Diagrams.Backend.Cairo
import Diagrams.Backend.Cairo.List
import Data.Colour
import Data.Colour.SRGB
import Data.Foldable (fold)
import Data.Monoid

cmp :: Diagram Cairo R2 -> Diagram Cairo R2 -> Diagram Cairo R2 -> IO Bool
cmp base img1 img2 = do
                baseAlphaColours <- renderToList 400 400 …
Run Code Online (Sandbox Code Playgroud)

haskell type-variables haskell-diagrams

5
推荐指数
1
解决办法
135
查看次数

使用 haskell 图表包设置 id 和 class

我正在使用diagramshaskell 包,我正在使用 SVG 后端。我将 SVG 标记直接嵌入到 HTML 文档中,以便将图形作为网页的一部分。我已经构建了一个非常酷的条形图,我想为它添加一些基本的交互性。例如,当您将鼠标悬停在一个栏上时,我想让颜色变浅。或者也许也会弹出一些东西。我想要实现这一点的方法是设置class一些 SVG 节点的属性。这可以用diagrams包吗?我知道它可以针对多个后端,并且该class属性在大多数后端中可能没有有意义的对应物,但我想知道是否仍然有一种方法可以潜入特定于后端的信息。感谢任何人都可以提供的任何见解。

svg haskell haskell-diagrams

5
推荐指数
1
解决办法
312
查看次数

Haskell的边距图SVG文件

我正在尝试这个图示例:

funs          = map (flip (^)) [2..6]
visualize f   = stroke' (with & vertexNames .~ [[0 .. 6 :: Int]] )
                    (regPoly 7 1)
                  # lw none
                  # showLabels
                  # fontSize (Local 0.6)
             <> star (StarFun f) (regPoly 7 1)
                  # stroke # lw thick # lc red
example       = center . hcat' (with & sep .~ 0.5) $ map visualize funs
Run Code Online (Sandbox Code Playgroud)

这是结果:

在此输入图像描述

一切看起来都像预期的那样,一些数字(或更确切地说,这些数字的中心)位于图像边缘附近,所以最后它们看起来像被切断了.

有办法解决这个问题吗?

graphics haskell haskell-diagrams

3
推荐指数
1
解决办法
229
查看次数

如何使线像圆一样粗?

我想制作一条宽度等于圆直径的圆形线.经过多次试验和错误后,这似乎产生了想要的输出.

import Diagrams.Prelude
import Diagrams.Backend.Cairo.CmdLine
main = mainWith example

path = fromVertices [p2 (0,0), p2 (3,0)] # lw 80

example :: Diagram B
example = atPoints [p2 (0,0)] n
  <> (path # lineCap LineCapRound  . lineJoin LineJoinRound)
  <> atPoints [p2 (3,0)] n
  <> square 10 # lw none # fc white
 where
   n =[circle 1 # fc green # lw none]
Run Code Online (Sandbox Code Playgroud)

但感觉不对.我希望lw 2对应circle 1因为2是半径的两倍,但肯定不是lw 80?!
为什么它适用于80?假设我错过了一些东西,怎么做一个像圆一样宽的圆形线?

haskell haskell-diagrams

2
推荐指数
1
解决办法
82
查看次数

标签 统计

haskell ×9

haskell-diagrams ×9

svg ×2

graphics ×1

gtk ×1

type-variables ×1