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) 我正在尝试学习如何使用图表库和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) 我使用和制作了一个数据存储符号.中间有红点的那个.B.difference
B.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绘图框架.下面的代码用于生成橙色六边形,文本"(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) 我现在正在我的图书馆学习论文,我需要你帮助制作新的线型.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) 我在理解如何理解和使用仅出现在函数的返回类型中的类型变量时遇到了一些麻烦.
我正在尝试使用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) 我正在使用diagrams
haskell 包,我正在使用 SVG 后端。我将 SVG 标记直接嵌入到 HTML 文档中,以便将图形作为网页的一部分。我已经构建了一个非常酷的条形图,我想为它添加一些基本的交互性。例如,当您将鼠标悬停在一个栏上时,我想让颜色变浅。或者也许也会弹出一些东西。我想要实现这一点的方法是设置class
一些 SVG 节点的属性。这可以用diagrams
包吗?我知道它可以针对多个后端,并且该class
属性在大多数后端中可能没有有意义的对应物,但我想知道是否仍然有一种方法可以潜入特定于后端的信息。感谢任何人都可以提供的任何见解。
我正在尝试这个图示例:
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)
这是结果:
一切看起来都像预期的那样,一些数字(或更确切地说,这些数字的中心)位于图像边缘附近,所以最后它们看起来像被切断了.
有办法解决这个问题吗?
我想制作一条宽度等于圆直径的圆形线.经过多次试验和错误后,这似乎产生了想要的输出.
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?假设我错过了一些东西,怎么做一个像圆一样宽的圆形线?