そうですね、EPSは真の透明度/不透明度をサポートできませんが、それはMathematica7がそのような悪い仕事をすることを許されているという意味ではありません。私のMathematica8で証明されているように、見栄えを良くすることは可能です。
Mathematica 7の出力の問題は、本当に明るい色が必要なときに、曲線と同じ色を塗りつぶしに使用することです。EPSはプレーンテキスト形式であるため、簡単なハックを作成するのは非常に簡単です。これがPSグラフィックスの簡単な説明です。
PSグラフィックスでは、パスを定義してから、それをストローク(線)にするか塗りつぶす(領域)にするか、またはその他の心配する必要がないことを指定します。色が設定され、リセットされるまでそこにとどまります。したがって、Mma7によって生成されたEPSをインポートして、すべての塗りつぶされたパスを見つけます。塗りつぶされたパスごとに、前の色を見つけて、塗りつぶしコマンドのすぐ上の色をより明るい色にリセットします。
それで、ここに例があります(私はそれを単一のスクリプト/モジュールにパッケージ化することを気にしませんでした)。すべての出力はMathematica7.0.1からのものです
p = Plot[Evaluate[Table[BesselJ[n, x], {n, 4}]], {x, 0, 10}, Filling -> Axis]

を使用してEPSファイルにエクスポートしますExport["BesselJs7.eps", p]
。これは次のような恐ろしいグラフィックを生成します

OK、今「修正」
pList = Import["BesselJs7.eps", "List"]; (* Import image as a list of strings *)
FList = Flatten@Position[pList, "F"]; (* find all fill commands *)
EPSファイルには/F { fill} bind def
、ショートカットを定義する行があることに注意してくださいF
。pList[[FList - 1]]
また、sのリストが生成されることを確認できます"closepath"
。
FColorList = {}; (* get list of colors associated with fills *)
Catch[Do[
i = 0; rgb = True; newpath = True;
While[rgb || newpath,
(*Print[{f,i,f-i,rgb,newpath,pList[[f-i]]}];*)
If[rgb && StringMatchQ[pList[[f - i]], __ ~~ "r"], rgb = False;
AppendTo[FColorList, pList[[f - i]]]];
If[newpath && StringMatchQ[pList[[f - i]], "newpath" ~~ __],
newpath = False; np[f] = f - i];
If[f - i == 1, Throw[{f, rgb, newpath}]];
i++],
{f, FList}]]
ここで、新しい色を作成するためのハックです。私が行うのは、各rgb値に.5を追加することだけです。これは間違いなく改善することができます:
FColorListNew = Table[Most@ToExpression@StringSplit[f] + .5,
{f, FColorList}] /. _?(# > 1 &) -> 1.;
FColorListNew = Table[StringJoin[{Riffle[ToString /@ f, " "], " r"}],
{f, FColorListNew}];
最後に、新しい色を挿入して書き戻します。
Do[pList = Insert[pList, FColorListNew[[i]], np[FList[[i]]] + i],
{i, Length[FList]}]
Export["BesselJsFixed.eps", pList, "List"]

場所を見つけるなどのいくつかのことnewpath
は不要であり、おそらくすべてを片付けることができます。しかし、私は今のところそれに十分な時間を費やしました!