2011-01-25 26 views
5

Tôi đang cố gắng vẽ nhiều danh sách trong cùng một lô trong Mathematica (ListLinePlot) và sử dụng PlotMarkers và Gói PlotLegend để có được hình cuối cùng. Vấn đề là Mathematica đặt một điểm đánh dấu cho mỗi điểm và điều này làm cho nó khó để biết được điểm đánh dấu nào là ở đâu trong ô. Có thể có một điểm đánh dấu lô đất xuất hiện mỗi mẫu n (ví dụ: cứ 10 điểm cho một âm mưu 100 điểm).Khoảng thời gian tùy chỉnh của điểm đánh dấu trong Mathematica PlotMarkers

Chỉ thị tại thời điểm này là PlotMarkers -> {Tự động, Nhỏ}.

+1

Tôi không biết một cách để làm điều đó với PlotMarkers, bạn có thể có thể lấy một phần mười bộ dữ liệu của bạn để chỉ 1 bỏ qua trong mỗi 10 điểm? –

+1

Cho phép tôi chào đón bạn đến StackOverflow và nhắc nhở ba điều chúng tôi thường làm ở đây: 1) Khi bạn nhận được trợ giúp, hãy cố gắng cung cấp cho nó quá ** trả lời các câu hỏi ** trong lĩnh vực chuyên môn của bạn 2) ['Read the FAQs'] (http://tinyurl.com/2vycnvr) 3) Khi bạn nhìn thấy các câu hỏi và câu trả lời hay, hãy đề cao chúng ['sử dụng tam giác màu xám'] (http://i.imgur.com/kygEP.png), như độ tin cậy của hệ thống dựa trên danh tiếng mà người dùng đạt được bằng cách chia sẻ kiến ​​thức của họ. Cũng nên nhớ chấp nhận câu trả lời giải quyết tốt hơn vấn đề của bạn, nếu có, ['bằng cách nhấn dấu kiểm'] (http://i.imgur.com/uqJeW.png) –

Trả lời

3

Nếu bạn muốn kiểm soát nhiều hơn trên vị trí của các điểm đánh dấu lô đất hơn Brett's answer mang lại cho bạn, thì có thể bạn phải đặt các điểm đánh dấu theo cách thủ công. Ví dụ (sửa đổi dụ Brett)

data = Accumulate /@ RandomReal[{-1/2, 1}, {3, 100}]; 
col = {Red, Blue, Green}; 
decimate[i_] := {col[[i]], PointSize -> Medium, 
    Point /@ Transpose[{Range[1, 100, 10], data[[i, 1 ;; -1 ;; 10]]}]} 
ListLinePlot[data, PlotStyle -> col, Epilog -> Table[decimate[i], {i, 3}]] 

enter image description here

Tất nhiên Point có thể được thay thế bằng bất kỳ đồ họa đối tượng bạn muốn - ví dụ Text, Inset vv ...

+0

Bạn liên kết với câu trả lời của Brett. Yaro trả lời, nhưng sau đó đã xóa những đóng góp của anh ấy. –

+0

@belisarius: Cảm ơn - Tôi chắc đã nhầm lẫn rồi! Đã chỉnh sửa! – Simon

+0

+1 Ý tưởng ở ngay đó. Bạn có thể thêm tham số để phân tích [] để đáp ứng hầu hết các nhu cầu thông thường nhất. Tốt nhất! –

4

Tôi nghĩ rằng việc thêm một cái gì đó giống như Mesh->10 nên làm việc cho bạn:

data = Accumulate /@ RandomReal[{-1/2, 1}, {3, 100}]; 
ListLinePlot[data, PlotMarkers -> {Automatic, Small}, Mesh -> 10] 

ListLinePlot with a fixed number of plot markers

+2

Điều này có vẻ là hướng, nhưng ngay cả trong ví dụ tương tự thay đổi Mesh-> 10 thành Mesh-> 5 hoặc 20 dẫn đến hành vi bất thường vì các điểm đánh dấu không còn tương ứng với màu sắc hoặc hình dạng. – o4tlulz

+0

Ví dụ, sử dụng cùng một mã nhưng với Mesh -> 9 cung cấp cho cốt truyện sau đây (vì một số lý do) chỉ đánh dấu lô đầu tiên được sử dụng ở khắp mọi nơi: http://ifile.it/j8g51q2 – Simon

2

Cũng nên nhớ bạn có thể sử dụng Tooltip gây ra các điểm đánh dấu tọa độ để bật lên khi bạn vượt qua con trỏ chuột trên nó:

enter image description here

1

Các ví dụ về những gì tôi đã mô tả trong nhận xét. Các điểm đánh dấu không hoạt động đúng.

Rõ ràng tôi không thể đăng hình ảnh, nhưng chạy đoạn mã sau

data = Accumulate /@ RandomReal[{-1/2, 1}, {3, 100}]; 
ListLinePlot[data, PlotMarkers -> {Automatic, Small}, Mesh -> 5] 

nên cho kết quả không đúng. Ngoài ra số lượng dữ liệu và lô trong cùng một con số khá lớn để chọn riêng từng điểm và tôi muốn giữ cùng Chỉ thị cho các lô và phạm vi dữ liệu khác nhau vì chúng có xu hướng thay đổi từ 100 đến 300 trong mỗi trường hợp và tôi có để lưu chúng trong các bảng khác nhau khi chúng được sử dụng trong các tính toán khác trên đường đi.

Lô văn bởi Belisarius, chạy đoạn mã trên

enter image description here

+0

Kết quả của mã của bạn có vẻ phù hợp với tôi. Hoặc tôi thực sự hiểu lầm những gì bạn muốn đạt được, hoặc bạn nên tắt Mma và bắt đầu một bản sao mới và thử lại. BTW, và chỉ để kiểm tra, tôi sẽ chỉnh sửa câu trả lời của bạn và thêm cốt truyện kết quả, vì vậy bạn có thể bình luận những gì là sai .. –

+0

@belisarius: o4tlulz là đúng. Nhìn vào các vòng tròn màu xanh trong dòng màu đỏ và màu nâu trong cốt truyện của bạn. Đối với các giá trị khác nhau của 'Mesh -> i' nó thậm chí còn tồi tệ hơn thế. Nó cũng không cố định bằng cách sử dụng 'PlotMarkers' rõ ràng. Có vẻ như các tùy chọn 'Grid' và' PlotMarkers' không chơi tốt với nhau .... – Simon

+0

@ o4tlulz: Tôi nghĩ bạn đang đề cập đến câu trả lời của tôi trong đoạn cuối của câu trả lời của bạn ở trên. Miễn là bạn tiếp cận với vấn đề lập trình, sau đó bạn có thể chọn các điểm (nói dựa trên giá trị x) và đặt đánh dấu âm mưu nhất quán trên tất cả các lô của bạn. – Simon

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