かゆいところだけ書くMathematica tips

かゆいところだけ書くMathematica tips

効用:発熱、関節痛、プロット関連のかゆみ緩和

エラーバーを影で表示したい

こんなかんじのプロットが描けます。

f:id:tatmann9:20160416124648p:plain

まず普通のエラーバー付きプロットは、

ErrorListPlot—Wolfram Language Documentation

です(Needs[ ]でパッケージのロードをお忘れなく)。 エラーバーをI字型の棒で表現するのもよいですが、半透明な領域として表現すると、すごくキレイになります。 簡単なプロットの場合は"ただ格好つけてるだけ"ですが、ひとつのプロットにたくさんの線&エラーバーを書く場合は、結構わかりやすくなる気がします。

詳しくは、ココ:

mathematica.stackexchange.com

なかなかゴッツイですが、細かいところはそのままコピペして使って、必要なところをちょいちょいカスタマイズすればよいかと。 この方法だと、ErrorListPlotのパッケージは不要です。 下に自分の使っている例を載せておきます。

ClearAll[ePlot, ePlotFunc, plusMinusMean];
plusMinusMean[a_, b_] := {a + b, a - b, a};
ePlot[plotFun_, dataX_, plusMinList_, color_] := 
 Block[{f}, f[y_] := Transpose[{dataX, y}];
  plotFun[{f[plusMinList[[All, 1]]], f[plusMinList[[All, 2]]], 
    f[plusMinList[[All, 3]]]}, Filling -> {1 -> {2}}, 
   Joined -> {True, True, True}, 
   PlotStyle -> {Opacity[0], Opacity[0], Darker@color}, 
   PlotMarkers -> {Graphics@{Disk[]}, 0.01}, 
   FillingStyle -> Directive[Opacity[0.2], color], Frame -> True, 
   Axes -> False, 
   FrameLabel -> {Style["X value", "Italic", FontSize -> 30], 
     Style["Y value", "Subtitle", FontSize -> 23], 
     Style["Title of this plot", "Subtitle", FontSize -> 23]}, 
   LabelStyle -> {FontFamily -> "Times", Directive[Large], Bold, 
     Thick}, PlotRange -> {{1.9, 6.1}, {0.8, 1.8}}, 
   AspectRatio -> 3/4, ImageSize -> Medium]]


ePlotFunc[data_, color_] := 
 Module[{dataY, dataX, errorY, plusMinList}, dataY = data[[All, 2]];
  dataX = data[[All, 1]];
  errorY = data[[All, 3]];
  plusMinList = Thread[plusMinusMean[dataY, errorY]];
  ePlot[ListPlot, dataX, plusMinList, color]]

colors = ColorData[109, "ColorList"][[1 ;; 4]];

これを読み込ませておいてから、

Show@MapThread[ePlotFunc, {{data1, data2, data3, data4}, colors}]

というかんじにdata1〜data4をプロットします。(data1〜data4は、主線&エラーの絶対値のN-by-2行列。)

これで最初に載せたプロットが出ます。