印刷和图形[]

Lou*_*Lou 7 printing graphics wolfram-mathematica

我想画一个矩形(或更多),印在纸上显示矩形,单位为厘米.所以

Graphics[{Rectangle[{0, 0}, {19, 28}], Orange, Rectangle[{0, 0}, {1, 1}]}]
Run Code Online (Sandbox Code Playgroud)

将打印为两个矩形,可以测量为1厘米x 1厘米(橙色一个),黑色矩形为19x28厘米.

似乎有些变量很重要:ImageSize当然还有AspectRatio.

我使用AspectRatio->19/28和用于ImageSize各种设置,ImageSize->{19*27,28*27}但它一直不是很准确.

我将图形导出为TIFF,然后使用Windows照片库打印到整页照片.有任何人对此有经验吗?必须有一个公式而不是反复试验.

更新:我尝试了@Szabolcs的建议,我使用了以下代码:

   g = Graphics[{White, EdgeForm[Directive[Thick, Black]], 
   Rectangle[{0, 0}, {18, 28}], Orange, Rectangle[{0, 0}, {10, 10}]}]

   final = Show[g, AspectRatio -> Automatic, 
   PlotRange -> {{-0.5, 18.5}, {-0.5, 28.5}}]

   cm = 72/2.54

   Export["final.pdf", Show[final, ImageSize -> {19 cm, 29 cm}]]
Run Code Online (Sandbox Code Playgroud)

这非常有效.10x10cm的橙色矩形是精确测量10x10cm

cm 72/2.54的值不是我预期的,因为我虽然Windows使用96dpi和Mac 72dpi(从www读取).然而,72是有效的价值.我也一直在玩框架,但后来变得丑陋.没有找到一种方法来获得正确的结果,以及所有可能的设置.应该在选定的边界内自己创建框架/刻度等,但这不是我想要追求的路径.

Sza*_*lcs 8

g = Graphics[{Rectangle[{0, 0}, {19, 28}], Orange, Rectangle[{0, 0}, {1, 1}]}]
Run Code Online (Sandbox Code Playgroud)

好的,您需要做的第一件事就是设置x和y使用相同单位的方向,这意味着

Show[g, AspectRatio -> Automatic]
Run Code Online (Sandbox Code Playgroud)

但这已经是默认值.

您需要做的第二件事是选择绘图区域的大小和范围.让你的矩形居中于21乘30:

plotArea = {{0, 21}, {0, 30}} - {1, 1}
Show[g, AspectRatio -> Automatic, PlotRange -> plotArea]
Run Code Online (Sandbox Code Playgroud)

您需要做的第三件事是关闭添加任何填充/边距,使图形的实际尺寸大于绘图范围:

final = Show[g, AspectRatio -> Automatic, PlotRange -> plotArea, PlotRangePadding -> 0, ImagePadding -> 0]
Run Code Online (Sandbox Code Playgroud)

我相信ImageMargins没有区别,但如果确实如此,那么也将它设置为0.

您需要做的最后一件事是将其导出为可保留图像尺寸的可打印格式,并设置图像的大小,使得1 cm在绘图上为1个单位.Mathematica接受打印机点的图像尺寸,所以让我们定义:

cm = 72/2.54
Export["final.pdf", Show[final, ImageSize -> 21 cm]]
Run Code Online (Sandbox Code Playgroud)

我们希望情节宽21厘米,因为它宽21个.使用PDF作为导出格式,而不是TIFF.在ImageSize被内部使用需要Show解决一些问题Export...

现在在Adobe Reader中打开PDF,打开打印对话框,确保Page Scaling设置为None!我不知道如何在其他读者中这样做...还要确保你的身材适合纸张(21 x 30厘米对​​于A4来说太大了)

我不打算做测试打印,所以让我知道这是否适合你:-)这样生成的PDF大小正好是21 x 30厘米,所以如果出现问题,必须在打印时发生阶段.