Mathematica如何清晰的把圖導入到Word?
MMA即使使用export導出的圖也很模糊,如何辦?
如圖
Plot[{Sin[x], Cos[x]^2}, {x, -4, 4}, AxesOrigin -&> {-4, -1},
GridLines -&> Automatic, GridLinesStyle -&> Directive[Dashed],
Frame -&> True,
FrameLabel -&> {"independent variable x", "dependent variable y"},
PlotLabel -&>
Style["y=sin(x) y=!(*SuperscriptBox[(cos), (2)])(x)", 15,
Bold], LabelStyle -&>
Directive[FontFamily -&> "Helvetica", FontSize -&> 12],
PlotStyle -&> {Directive[Blue, Thickness[0.006]],
Directive[Red, Thickness[0.006], Dashed]},
PlotLegends -&>
Placed[{"sin(x)",
"!(*SuperscriptBox[(cos), (2)])(x)"}, {0.65, 0.3}],
Background -&> White]
以上是弄到word的效果圖,截屏後反而清晰,export後反而模糊,為什麼?若弄成emf格式,word中效果最差感謝朋友的回答,我試過,若放大到Size 1000,坐標軸什麼的都好小,那麼,涉及到調整大小,但還有以下問題1,圖的標題字體如何調整?2,如何分別調整FrameLabel的字體,大小,以及坐標軸的字體,大小?3,坐標軸上面的刻度如何調大?若放大1000,然後貼到word中,由於排版原因肯定要縮小,這時候小的刻度看不見了,如圖: 曲線是很順滑,但是刻度完全看不清
若放大刻度值,這時數字和坐標軸挨的又很近,如何解決?如圖4,如何修改Lengend的字體以及大小?===============================================5月17號增加:感謝孫挺,Zixuan Zhao等朋友的回答,受益匪淺!在下涉入mma不深,還有些問題向各位請教:1,MMA系統默認的ImageSize是多大?有時候ImageSize和ImageResolution需要搭配,我不知道原始的ImageSize應該是多大呢?2,PlotPoints 和ImageResolution有什麼關聯?PlotPoints很大是不是不能理解成ImageResolution很大?
3,Manipulate畫的帶有參數控制項的圖能不能弄成一個可以與mma無關的exe文件?類似於Matlab的GUI界面?我理解是不可以,是不是一點辦法都沒有?比如若要做一個獨立於mma的軟體,輸入某些參數可以得到某些圖形,在mma裡面很方便,脫離mma就不行了嗎?這樣我認為對MMA就比較浪費了啊。。再次感謝!
方法一:ImageSize
Export["1.png", ParametricPlot[{Sin[u] u , Cos[u] u},
{u, 0, 100}]]
Export["2.png", ParametricPlot[{Sin[u] u , Cos[u] u},
{u, 0, 100}], ImageSize -&> 1000]
Export["example.png",
ParametricPlot[{Cos[u] u, Sin[u] u}, {u, 0, 100}],
ImageResolution -&> 300]
Export["1.svg", ParametricPlot[{Sin[u] u , Cos[u] u},
{u, 0, 100}]]
解決方法mma.se上有,就把代碼辦過來了(作者的名已經在函數名里了)。
roundtripPDF[gr_, opts : OptionsPattern[]] :=
First@ImportString@ExportString[gr, "PDF", opts];
asXML[gr_] :=
ImportString[ExportString[gr, "SVG"], "XML", "ReadDTD" -&> False];
addComment[None, elt_] := e<
addComment[Automatic, elt_] :=
addComment["*** Exported from Mathematica ***", elt];
addComment[comment_String, XMLElement[tag_, attrs_, contents_]] :=
XMLElement[tag, attrs,
Append[contents, XMLObject["Comment"][comment]]];
addAttributes[oldAttrs_, newAttrs_] :=
DeleteDuplicatesBy[Join[oldAttrs, newAttrs], First];
Options[Pillsy`ExportSVG] := {Background -&> Automatic,
AspectRatio -&> Automatic, "CommentString" -&> Automatic};
Pillsy`ExportSVG[file_String, expr_, opts : OptionsPattern[]] :=
With[{svgStructure = asXML@roundtripPDF[expr, opts],
dims = ToString /@
ImageDimensions@
Rasterize[Show[expr, ImagePadding -&> 0], "Image"]},
Export[file,
svgStructure /.
XMLElement["svg", attrs_, contents_] :&>
addComment[OptionValue["CommentString"],
XMLElement["svg",
addAttributes[attrs,
Join[{"viewBox" -&> "0 0 " &<&> StringRiffle[dims],
"width" -&> dims[[1]] &<&> "pt",
"height" -&> dims[[2]] &<&> "pt"},
If[OptionValue[AspectRatio] ===
Full, {"preserveAspectRatio" -&> "none"}, {}]]], contents]],
"XML"]]
之後運行
Pillsy`ExportSVG["2.svg", ParametricPlot[{Sin[u] u , Cos[u] u},
{u, 0, 100}]]
其實直接複製粘貼就行了,粘貼過去自動就是矢量圖,格式也基本正確。
這個問題,涉及到幾件事:
1. 導出的是矢量圖還是點陣圖?
2. 導出的圖片解析度和像素解析度如何?3. Word如何渲染你的圖片?在Mathematica中,圖片解析度對應選項ImageSize,像素解析度對應ImageResolution這個選項。圖片不清楚,既要解決ImageSize這個問題,還要考慮ImageResolution這個問題,而非ImageSize一件事。在中Word插入Mathematica生成的圖片,是一件比較tricky的事情。因為Mac的Word和Windows有些差別,而最近在Mac下的Word 預覽版和Windows目前的版本效果上比較接近,所以我做了以下這個實驗來顯示差別:題主遇到的問題,應該是左下角的情況:
直接將Mathematica中的圖導入Word就會不清晰。原因是:Mathematica默認輸出的是解析度(圖像像素)比較低的點陣圖,所以會出現這個結果。解決方案在右側:或者用矢量圖,輸出PDF(結果右下角);或者輸出高質量的點陣圖(結果右上角):Export["~/Downloads/fig.tiff", Show[fig(*put your figure here*), ImageSize -&> 400],
ImageResolution -&> 300]
注意,輸出時,我用Show調整了以下圖片的圖像大小,之後在Export中調整了圖片的像素質量。
對於Mac平台,使用Word2011版本的話,直接從Mathematica中複製graphics粘貼過來,會默認粘貼PDF,所以質量高;但這一方法不是對所有圖片都有效,保險的方法還是用以上介紹的方式。
PS:
輸出圖片確實是一件tricky 的事,坑很多。
如果還有問題,再貼上來,我們再討論。不過,Mathematica做的的圖真是很美!
祝Mathematica使用愉快!----------------------------------------------
updates for St. Jason"s comments:Q1,你的圖的Frame邊框是灰色的,是否是mma為10版本的緣故?還是特別設置的?我的是9版本A1:是的,v10的繪圖風格確實與之前版本有較多不同。2,我試過直接轉成pdf,確實清晰,不過如何插入word呢?pdf格式是給latex用的嗎?
A2:對於Windows下的Word,不可以直接插入PDF;而Mac下是可以的。Windows下Word保險的插入圖片的方式,是選擇插入高解析度的點陣圖。或者,可以插入Windows自己的wmf或emf格式。不過wmf和emf並不廣泛使用,所以建議還是選擇高解析度的點陣圖。
另外,PDF並不僅僅適用於LaTeX。如果用於學術出版的話,PDF已經被越來越多的期刊認可。而且,PDF可以方便的轉換為其他格式(矢量圖、點陣圖均可)。3,你最後的代碼中的imagesize和imageresolution可以在plot函數中使用嗎?還是說只能這樣用才有效?
A3:ImageSize這個選項對所有有關image和graphics的對象都是適用的;ImageResolution僅對點陣圖有關(或者說像素解析度有關)的圖形對象適用(如:tiff,jpg,png等),而對PDF,svg等矢量圖是沒有作用(因為它們與像素質量無關)。Plot做的是矢量圖,所以ImageSize有效,ImageResolution無效。4,legend字體和大小如何更改?關於圖例mma似乎不是那麼好用,我看到說明文檔中需要用need函數增加一個包,對這塊不太了解,故求教,再次感謝!A4:v9之後的版本在legend方面做出了極大改進,不要再使用以前的PlotLegends package(已過時)。你可以閱讀Mathematica的documentation中有關legend的內容來學習內容。實際上,v9之後,Mathematica 增加了Legended這樣一類對象,極大地擴展了legend的適用範圍。如有問題,可以再開個問題我們來討論。1,圖另存為PDF,dpi高些,建議圖拉大點兒再存2,打開保存的PDF,調整大小,使用快照3,粘貼到word
另存為.svg矢量圖可以在Visio中修改,然後再粘貼到word,完美解決
右鍵保存成PDF即可。。。
簡單易行,就用截屏軟體後粘貼;要想效果好,就用Export函數。
親測最簡單方便的辦法:利用HyperSnap等截圖軟體在mma中直接截,然後粘到Word里
推薦閱讀:
※mac下的word怎麼添加目錄?
※word多級標題編號格式到底怎樣調整?
※Evernote 為什麼沒有 Word 裡面的格式刷按鈕?
※如何把PPT的文字轉換到Word文檔?
※網上有哪些優質的ppt,excel,word學習教程?
TAG:WolframMathematica | MicrosoftWord |