2017-05-30 85 views
0

我想改變小提琴情節中平均值的外觀。我正在使用matplotlib。我可以改變的手段的顏色與下面的代碼:將小提琴情節中的平均指標改爲圓圈

import matplotlib.pyplot as plt 

fig,(axes1,axes2,axes3) = plt.subplots(nrows=3,ncols=1,figsize=(10,20)) 

r=axes2.violinplot(D,showmeans=True,showmedians=True) 
r['cmeans'].set_color('red') 

但現在我想改變平均值(目前爲一條線,像中值)爲「小圈子」的樣子。 有人可以幫助我嗎?

+0

也許你可以發表你的當前地塊的外觀。還請添加一些更多的細節,以清楚地瞭解到底是什麼問題。 –

回答

0

這個想法可以獲得平均線的座標並在這些座標處繪製散點圖。

獲取的座標可以

  • 或者通過遍歷的平均線路徑進行,

  • 或通過從輸入數據reacalculating平均值。

    #alternatively get the means from the data 
    y = data.mean(axis=0) 
    x = np.arange(1,len(y)+1) 
    xy=np.c_[x,y] 
    

完整代碼:

import matplotlib.pyplot as plt 
import numpy as np; np.random.seed(1) 

data = np.random.normal(size=(50, 2)) 

fig,ax = plt.subplots() 

r=ax.violinplot(data,showmeans=True) 

# loop over the paths of the mean lines 
xy = [[l.vertices[:,0].mean(),l.vertices[0,1]] for l in r['cmeans'].get_paths()] 
xy = np.array(xy) 
##alternatively get the means from the data 
#y = data.mean(axis=0) 
#x = np.arange(1,len(y)+1) 
#xy=np.c_[x,y] 

ax.scatter(xy[:,0], xy[:,1],s=121, c="crimson", marker="o", zorder=3) 

# make lines invisible 
r['cmeans'].set_visible(False) 

plt.show() 

enter image description here

+0

非常感謝!第一種方式完美地工作! :) – Leo