2012-01-12 23 views
7

Tôi sử dụng này để tạo ra một biểu đồ Bar:Làm thế nào để dừng barchart từ ẩn nhãn cho giá trị dữ liệu 0 trong Mathematica?

BarChart[ 
[email protected], 
BarOrigin -> Left, 
ChartLabels -> 
    Placed[{[email protected], [email protected]}, {Before, After}], 
ChartElementFunction -> "FadingRectangle" 
] 

Với data = {7, 10, 0, 6, 0, 3, 5} này cung cấp cho

Mathematica graphics

Vấn đề là một số các giá trị dữ liệu là 0 và BarChart thậm chí sẽ không thêm các nhãn cho họ. Thay vào đó, nó để lại một không gian mở. Làm thế nào tôi có thể làm cho nó vẫn còn thêm các nhãn mặc dù các giá trị là 0?

Điều này là với Mathematica 8.

+0

Có thể liên quan: [Không cắt xén BarChart khi sử dụng Khung thay vì Axes] (http : //stackoverflow.com/questions/6557883/not-cropping-barchart-when-using-frame-instead-of-axes) – Szabolcs

+1

Đó là một cách giải quyết khó khăn, nhưng nếu không có gì tốt hơn, bạn có thể thực hiện 'BarChart [Rev erse [data /. x_ /; x == 0 -> 10^-5], ... '(nghĩa là thay thế số 0 bằng số nhỏ trước khi vẽ đồ thị). Tôi đã sử dụng mẫu 'x_ /; x == 0' để phù hợp với cả 0 và 0.0 ... Tôi đoán 0 | 0.0 cũng sẽ tốt. – Szabolcs

Trả lời

6

gì về

data = {7, 10, 0, 6, 0, 3, 5} 

labels = ("label " ~~ ToString[#]) & /@ data 

BarChart[[email protected], BarOrigin -> Left, 
ChartLabels -> Placed[{[email protected], [email protected]}, {Axis, After}], 
ChartElementFunction -> "FadingRectangle"] 

Có vẻ như rằng "Trước khi" không và "Trục" không làm việc?

chart

+0

Điều này trông giống như giải pháp sạch nhất, ngay cả khi bạn vẫn còn mất nhãn thứ hai. –

3

Cách tiếp cận đơn giản nhất là sử dụng hack như data /. {(0|0.0) -> 0.00001}.

Tôi nghĩ rằng điều này sẽ hoạt động mà không cần hack, vì vậy bạn cũng nên gửi báo cáo với [email protected]

+0

Tôi nhận ra mình đã nhầm lẫn khi chỉnh sửa tập dữ liệu mẫu và âm mưu thành câu hỏi: tập dữ liệu có thể là số thực, vì vậy, '0 | 0.0 -> 0.00001' hoặc thứ gì đó tương tự sẽ tốt hơn. – Szabolcs

+0

@ Szabolcs Điểm tốt. Tôi đã thêm cách tiếp cận của bạn (sau khi xem xét ngắn gọn 'PossibleZeroQ' ...) –

2

Mã của bạn hoạt động như trình bày trong Mathematica 7 trên Windows 7.

data = {7, 10, 0, 6, 0, 3, 5}; 

labels = Row[{"label",#}]& /@ data; 

BarChart[ 
    [email protected], 
    BarOrigin -> Left, 
    ChartLabels -> 
    Placed[{[email protected], [email protected]}, {Before, After}], 
    ChartElementFunction -> "FadingRectangle" 
] 

Mathematica graphics

+1

Tôi cho rằng tôi nên chỉ định tôi đang sử dụng Mathematica 8. –