もう少し高度な軸用に独自のカスタム y 軸を構成しようとしました (ノルム確率プロット、結果については、リンクされた png を参照してください)。
http://img5.fotos-hochladen.net/uploads/labelmisaligned2cd86m4qov.png
ティックモードは「手動」に設定されています。目盛り線を内側に向けたいと思います。これは、科学的なトピックのプロットでは、もう少し「専門的」に見えることがあります)。そのため、TickLengthプロパティを -0.5 に設定します (ただし、問題は方向に依存しません)。「内側」のプロパティはありません。少なくとも見つけられなかったので、このアイデアを試してみました。これは目盛り線で機能しました。この構成では、目盛りラベルが軸に正しく整列しなくなります (画像を参照)。だから私はアンカーと位置のプロパティで少し遊んだ。個々のティックの位置プロパティは、によって設定されます
tick.Label.Position = new Vector3(2f, 0, 0);
問題は、このプロパティが効果がないことです。この問題の原因となっているコードを元のソース コードで検索したところ、見つかりました。position プロパティは、「ワールド」の原点と目盛り線の位置のみに依存する値によって軸が構築されるたびに上書きされます。カスタム位置設定が消去されます。
だから私の質問は:
- この動作は意図されたものですか、それともバグですか?
- バグではない場合、軸の目盛りラベルを軸線に合わせて整列するにはどうすればよいですか?
まとめ: ticks ラベルの position プロパティは効果がありません。標準の目盛り方向を使用すると、自動テキスト配置は「OK」です(ただし、テキストから軸への距離とテキスト自体の右/左配置(テキストブロック配置)を制御できると便利です)場合)。ラベルを軸の位置に変更したい場合、機能しません。プロ並みのプロットには、これらのフォーマット機能が不可欠だと思います。
ILAxis.csのConfigureAxisメソッドは、次の foreach ブロック内のすべてのラベル位置を上書きします。
foreach (ILTick tick in Ticks) {
float curVal = tick.Position - min;
Vector3 curPos = startWorld + a * curVal;
tickPosArr[i++] = curPos.X; tickPosArr[i++] = curPos.Y; tickPosArr[i++] = curPos.Z;
if (Ticks.TickLength < 0)
tick.Label.Position = curPos;
curPos += (tickDirWorldStartLines + ticka * curVal);
tickPosArr[i++] = curPos.X; tickPosArr[i++] = curPos.Y; tickPosArr[i++] = curPos.Z;
if (Ticks.TickLength >= 0)
tick.Label.Position = curPos;
乾杯、
アンドレ
編集:
私のコメントで述べたように、アンカープロパティを使用して「回避策」を見つけました
http://www.fotos-hochladen.net/uploads/unbenanntcs7kreytib.png