كيف يمكنني تبرير الملصقات عند رسم "مع العلامات" في Gnuplot؟
سؤال
ينتج الأمر المؤامرة التالي مخطط شريط ، وفوق كل شريط يتم رسم القيمة على أنها تسمية ، منسقة مع GPRINTF:
plot "data.txt" using 6:1 index 0 notitle with boxes linestyle 1,\
"data.txt" using 6:(0.7):(gprintf("%5.2f", $1)) index 0 notitle \
with labels font "Courier,34" rotate left
أرغب في أن تكون ملصقات القيمة محاذاة حتى أتمكن من استخدام خط Helvetica المظهر الجميل بدلاً من Courier لمحاذاة النقاط العشرية.
لذا ، كيف يمكنني تضمين التبرير في الأمر أعلاه؟
لقد فشلت في العثور على أي شيء عن هذه المشكلة المحددة في وثائق GNUPLOT أو على الويب. يمكن تبرير الملصقات الأخرى بسهولة ، ولكن هل من الممكن أيضًا التآمر مع الملصقات؟
المحلول
لا يمكنني اختبار مثالك الخاص ، لكن لديّ يبدو لي:
...
plot "test.dat" using ..., \
"" using ($1-100000):2:3 with labels rotate left notitle
...
... أين ال "rotate left
"تم أخذ جزء من البروتوكول الاختياري.
حسنًا ، لم يكن لدي حظ كبير في العثور على معلومات حول "المحاذاة" أو "تبرير" الملصقات على الشبكة ؛ لذلك حاولت أن أنظر في مساعدة gnuplot على الإنترنت. في الأساس ، الأشياء ذات الصلة تحت help set label
- لست متأكدًا تمامًا من كيفية النزول إليها ، ولكن هنا سجل الأوامر أدناه ؛
$ gnuplot ... G N U P L O T Version 4.4 patchlevel 2 ... Terminal type set to 'wxt' gnuplot> help with labels Sorry, no help for 'with labels' gnuplot> help with Functions and data may be displayed in one of a large number of styles. The `with` keyword provides the means of selection. Syntax: with { {linestyle | ls } ... where is one of lines dots steps errorbars xerrorbar xyerrorlines points impulses fsteps errorlines xerrorlines yerrorbars linespoints labels ... ... gnuplot> help labels The `labels` style reads coordinates and text from a data file and places the text string at the corresponding 2D or 3D position. 3 or 4 input columns of basic data are required. .... 3 columns: x y string # 2D version ... See also `datastrings`, `set style data`. gnuplot> help set label Arbitrary labels can be placed on the plot using the `set label` command. Syntax: set label {} {""} {at } {left | center | right} {norotate | rotate {by }} ... By default, the text is placed flush left against the point x,y,z. لضبط الطريقة التي يتم بها وضع الملصق فيما يتعلق بالنقطة X أو Y أو Z أو إضافة معلمة التبرير ، والتي قد تكون "يسار" أو "يمين" أو "مركز" ، indicating that the point is to be at the left, right or center of the text. Labels outside the plotted boundaries are permitted but may interfere with axis labels or other text. إذا تم إعطاء "الدوران" ، فسيتم كتابة التسمية عموديًا (if the terminal can do so, of course). إذا تم تدويرها بواسطة " conforming terminals will try to write the text at the specified angle; non-conforming terminals will treat this as vertical text.
الأجزاء ذات الصلة جريئة. ويشرحون اعتقادًا خاطئًا واحد - رؤية rotate left
في مثال OP ، فكرت left
هو سمة rotate
, ومع ذلك ليس كذلك - left
هي معلمة تبرير منفصلة ، بينما rotate
هي الكلمة الرئيسية للتناوب المنفصل (أي rotate left
لا يعني "تدوير عكس اتجاه عقارب الساعة 90 درجة"كما اعتقدت في البداية).
إذا كان الأمر كذلك ، فيمكن للمرء أن يقلل من هاتين الكلمة الرئيسية:
...
plot "test.dat" using ..., \
"" using ($1-100000):2:3 with labels left rotate notitle
...
... واحصل على نفس مؤامرة الإخراج بالضبط. وإذا استبدلنا أخيرًا left
مع right
, ، كما في:
...
plot "test.dat" using ..., \
"" using ($1-100000):2:3 with labels right rotate notitle
...
... يمكننا أن نرى أن التسمية ما يزال تم تدوير "اليسار" (90 درجة بعكس اتجاه عقارب الساعة) - ومع ذلك ، أصبح الآن محاذاة اليمين لهذا الموضع.
حسنًا ، أتمنى أن يساعد هذا ،
هتافات!
نصائح أخرى
يمكنك تحديد عرض الحقل المطبوع ليكون 5 مسافات ، باستخدام "%5.2f"
صيغة. يستهلك ذلك مساحتين للجزء الكسري ، ومساحة واحدة للنقطة العشرية ، مما يترك مساحتين فقط لجزء صحيح من الرقم. لذا ، إذا قمت برسم أرقام غير ذلك 0.7
التي حددتها ، ستكون السلسلة الناتجة أوسع. أيضًا ، Helvetica هو محرف غير مونسبس ، لذلك فإن عرض الأحرف للأرقام ليست هي نفسها. وبالتالي ، فإن التحالف اليمين للمخرج لن يحل المشكلة-".11" و ".88" لن يكون محاذاة من النقاط العشرية.