2013-04-24 37 views
9

Gnuplot cung cấp một số kiểu điểm để sử dụng trong ô phân tán, chẳng hạn như dấu thập, dấu sao, hình vuông, hình tròn, v.v. lệnh test.Gnuplot: sử dụng hình dạng điểm tùy chỉnh, với mục nhập chú thích

Tuy nhiên, đối với một ứng dụng cụ thể, tôi cần các ký hiệu khác nhau và tôi cần các mục nhập chú giải hiển thị các ký hiệu này.

Cụ thể, tôi cần nhiều hơn bốn ký hiệu có thể được vẽ cả trong trạng thái được điền và trong trạng thái điền (e. G. Tam giác trỏ sang trái hoặc phải, hình bình hành hoặc hình chữ nhật không vuông).

Có một số phương pháp để sử dụng hình dạng khác (mỗi với một số yêu cầu đối với các thiết bị đầu cuối, ví dụ như hỗ trợ unicode):

  • using PNG images
  • sử dụng set label '□' at 3,4 cho mỗi điểm, nơi □ có thể được thay thế bằng bất kỳ ký tự unicode, chẳng hạn như ◁, ▶, ▭, ▮, vv)
  • sử dụng plot ... with labels và cung cấp một ký tự unicode như một nhãn

Vấn đề với tất cả các cách tiếp cận này là tôi không thể có được một mục nhập (khóa) truyền thuyết thích hợp bao gồm cả biểu tượng.

tôi coi âm mưu truyền thuyết bản thân mình, nhưng có hai lý do tại sao tôi không nghĩ rằng đây là khả thi:

  • Đối với âm mưu truyền thuyết ở bên phải của biểu đồ (hoặc ở phía dưới bên phải bên trong biểu đồ), tôi sẽ cần tính chiều rộng của chú giải, phụ thuộc vào phông chữ.
  • Một số ô có thể bao gồm cả một đường thẳng và một điểm (như using linespoints đối với các loại điểm Gnuplot thông thường), cả hai đều phải được hiển thị trong chú giải.

Tôi đang tạo các tệp đầu vào Gnuplot theo lập trình, do đó, cách tiếp cận liệt kê tất cả các điểm (như cách tiếp cận set label được đề cập ở trên), hoặc yêu cầu một số phép tính.

Trả lời

10

này sẽ không phải là một câu trả lời vì tôi sẽ cho bạn biết để thay đổi thiết bị đầu cuối của mình ... Tôi biết ...

Không có cách nào để thêm hình điểm người dùng định nghĩa trong gnuplot nào, nhưng thiết bị đầu cuối PostScript cho phép khoảng 70 khác nhau: Postscript point typeshttp://www.cp.cmc.osaka-u.ac.jp/~fumiko/tips/gnuplot_pt.jpg

Trong cuộc thảo luận sau, họ tuyên bố rằng không có cơ chế chung để thêm loại điểm do người dùng xác định. Và họ đi kèm với giải pháp bạn đưa ra trong câu hỏi của bạn. https://groups.google.com/forum/?fromgroups=#!topic/comp.graphics.apps.gnuplot/in57UNxG2o0

Tôi nghĩ một cách để đạt được mục tiêu của bạn có thể để

  1. Sử dụng postscript để xử lý một tập tin "con người có thể đọc được" .ps, sử dụng các loại điểm mặc định.
  2. "hậu xử lý" (= phân tích) tệp .ps (có vẻ như khởi động với tôi) để thay đổi kiểu điểm mặc định thời trang cũ thành thứ bạn thích, từ ký tự unicode sang hình dạng đã vẽ.
  3. ps2pdf hoặc ps2somethingyoulike tệp .ps đã xử lý.

Tôi sợ rằng tôi sẽ phải đối mặt với cùng một vấn đề, vì vậy hãy để thế giới biết nếu bạn tìm thấy một giải pháp dễ dàng hơn :)

+0

Tôi thích ý tưởng này và tôi sẽ thử. Tôi sẽ phải tìm một cách tốt để chuyển đổi postscript sang định dạng mục tiêu của tôi, mặc dù - nó có thể dễ dàng trên Linux, nhưng tôi cần phải làm điều đó trên Windows và tôi cần phải sản xuất EMF (cho Word) và PDF (cho pdfLaTeX) . –

+1

Thay vì thay đổi các ký hiệu mặc định, bạn cũng có thể xác định biểu tượng của riêng bạn và thay đổi lời gọi biểu tượng (có vẻ như '3747 2576 CircleF') để sử dụng định nghĩa của riêng bạn. –

+1

Các biểu tượng Unicode có thể là một vấn đề, mặc dù: Tôi chỉ chạy một thử nghiệm nhanh và có vẻ như cả IrfanView lẫn Inkscape đều không hiển thị các ký hiệu unicode trong các nhãn một cách chính xác. Bạn có thể sử dụng phông chữ Biểu tượng cho các chữ cái Hy Lạp, nhưng tôi cũng sẽ cần các ký tự unicode khác. –

2

nếu có ai muốn gây rối với các tuyến đường postscritp đây là một ví dụ đơn giản :

Mỗi biểu tượng được xác định bởi tên (Xem bảng trong câu trả lời của Pascali) trong file ps như ví dụ:

/BoxF { 
     ....3 or 4 lines of terse code ... 
     } def 

Replace with định nghĩa của riêng bạn: Đây là một bức thư vốn Pi.

/BoxF { 
stroke gsave moveto % required, this finishes prior line and moves to point 
0 30 rmoveto % nudge symbol to get it centered properly 
/Symbol findfont 120 scalefont setfont (P) Cshow 
grestore 
    } def 

Ví dụ này đơn giản có thể cần những con số (font size) tinh chỉnh với nhiều loại khác nhau của lô ..

Nếu bạn muốn sử dụng phông chữ mà không biết đến thông dịch postscript của bạn, bạn cần phải tự bao gồm chúng.

+0

BoxF là pt 5 bằng cách này. Các con số được tắt bởi một trong biểu đồ đó. – agentp

2

Tương tự như câu trả lời của Pascail, bạn cũng có thể làm điều này với SVG thay vì Postscript.

SVG dựa trên XML và có thể hoặc không thể xử lý dễ dàng hơn Postscript (sử dụng thư viện XML). Nó cũng hỗ trợ unicode.

Các vấn đề liên quan