2012-01-12 45 views

Trả lời

4

Có thể có nhiều cách để thực hiện điều này bằng cách nghịch ngợm với EdgeForm[]FaceForm[] trong Histogram, nhưng tôi thấy đơn giản hơn khi tự cuộn, bất cứ khi nào tôi cần. Dưới đây là một rất đơn giản và nhanh chóng dụ:

histPlot[data_, bins_, color_: Blue] := Module[{ 
     countBorder = 
    Partition[Riffle[Riffle[#1, #1[[2 ;;]]], Riffle[#2, #2]], 2] & @@ 
    HistogramList[data, bins, "PDF"] 
    }, 
    ListLinePlot[countBorder, PlotStyle -> color] 
    ] 

Làm histPlot[RandomReal[NormalDistribution[],{1000}],{-3,3,0.1}] mang đến cho

enter image description here

Sau đó bạn có thể mở rộng này thực hiện bất kỳ lựa chọn thay vì chỉ "PDF", và đối với trường hợp khi bạn muốn chọn thùng tự động. Tôi không thích tự động binning, bởi vì tôi muốn kiểm soát chiều rộng và chiều rộng bin của tôi để dự đoán và so sánh dễ dàng so với các lô khác.

+0

Cảm ơn bạn Yoda và Heike giúp đỡ của bạn. Yoda, chức năng khép kín của bạn hoạt động rất tốt. – tos

5

Bạn cũng có thể sử dụng ListPlot với InterpolationOrder->0:

(* example data *) 
data = RandomVariate[NormalDistribution[], 10^3]; 

hist = HistogramList[data, {.5}]; 

ListPlot[Transpose[{hist[[1]], ArrayPad[hist[[2]], {0, 1}, "Fixed"]}], 
    InterpolationOrder -> 0, 
    Joined -> True, 
    AxesOrigin -> {hist[[1, 1]], 0}] 

histogram

+0

@tos Đối với các phiên bản cũ hơn 8, bạn có thể sử dụng 'BinCounts' (cần thêm một chút công việc) – Szabolcs

+0

Cảm ơn bạn Heike cho đầu vào của bạn. @ Szabolcs, tôi đã không đề cập đến tôi đang sử dụng phiên bản 8, nhưng mẹo này rất tiện dụng cho người dùng các phiên bản trước 8. – tos

1

Dưới đây là hai phương pháp mà làm việc trong phiên bản 7, sử dụng sau xử lý:

rdat = RandomReal[NormalDistribution[0, 1], 200];
MapAt[ 
    {Blue, 
    Line[# /. {{Rectangle[{x_, y_}, {X_, Y_}]}} :> Sequence[{x, Y}, {X, Y}]] } &, 
    Histogram[rdat, PerformanceGoal -> "Speed"], 
    {1, 2, 2, 2} 
] 

Mathematica graphics

Cases[ 
    Histogram[rdat, PerformanceGoal -> "Speed"], 
    Rectangle[{x_, y_}, {X_, Y_}] :> {{x, Y}, {X, Y}}, 
    \[Infinity] 
]; 

Graphics[Line[Join @@ %], AspectRatio -> 1/GoldenRatio, Axes -> True] 

Mathematica graphics

+0

Đó là khá gần với những gì tôi đã sử dụng trong v7 trước khi tôi nâng cấp. Tôi không nghĩ rằng những điều này sẽ làm việc trong phiên bản 8, vì đã có những thay đổi đối với 'Histogram' – abcd

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