2012-03-19 106 views
1

我正在尋找一個函數來創建所謂的Beeswarm boxplot。這是在醫學和生物學中非常受歡迎的地塊,我很驚訝沒有找到它的MATLAB。MATLAB中的Beeswarm boxplot(scatterplot for分類數據)

基本上,每個組的數值數據被分成兩個分箱,點的抖動取決於特定分箱中的點數。

這裏是有R使用BEESWARM功能做了一個例子:

beeswarm example

不同顏色的額外組是很不錯的功能,但它不是現在需要我。

回答

3

上有文件交換的函數調用plotSpread,可以做這些地塊:

plotSpread({rand(100,1),randn(100,1)}) 

enter image description here

 data = [randn(50,1);randn(50,1)+3.5]*[1 1]; 
     catIdx = [ones(50,1);zeros(50,1);randi([0,1],[100,1])]; 
     plotSpread(data,'categoryIdx',catIdx,... 
      'categoryMarkers',{'o','+'},'categoryColors',{'r','b'}) 

enter image description here

+0

非常感謝,@Jonas。我使用distributionPlot很多,但不知何故錯過了這個功能的存在。這完全符合我目前的需求。考慮將擴展圖作爲FE的一個例子。如果該函數可以返回平均值中位數的句柄,那也不錯。 – yuk 2012-03-20 15:31:34

+0

@yuk:我曾經辯論過我是否應該把它作爲單獨的條目放在FE上;但也許它是有道理的。我爲'distributionPlot'添加了一些功能,我可以將其複製到'plotSpread'中,並且我寧願做一次大的修改而不是許多小功能,那麼'plotSpread'中還有哪些其他功能? – Jonas 2012-03-20 16:39:31

+0

我認爲這可能是一個偉大的單獨提交FE。 (1)輸出類似於distributionPlot,(2)分組(boxplot like),(3)顏色組,(4)水平方向,(5)輸入參數作爲名稱/值對,(6)如果可能的話,不同的方法如R/beeswarm。 – yuk 2012-03-20 18:23:31