在Matplotlib中更改长方体/小提琴图的轴标签

在Matplotlib中更改长方体/小提琴图的轴标签,matplotlib,Matplotlib,从这里稍微修改代码:如下所示,我可以用Python生成一个小提琴图,如下所示: # Import modules import pylab as pl from scipy import stats import numpy as np # Function for Violin Plot def violin_plot(ax,data,groups,bp=False): '''Create violin plot along an axis''' dist = max(gr

从这里稍微修改代码:如下所示,我可以用Python生成一个小提琴图,如下所示:

# Import modules
import pylab as pl
from scipy import stats
import numpy as np

# Function for Violin Plot

def violin_plot(ax,data,groups,bp=False):
    '''Create violin plot along an axis'''
    dist = max(groups) - min(groups)
    w = min(0.15*max(dist,1.0),0.5)
    for d,p in zip(data,groups):
        k = stats.gaussian_kde(d) #calculates the kernel density
        m = k.dataset.min() #lower bound of violin
        M = k.dataset.max() #upper bound of violin
        x = np.arange(m,M,(M-m)/100.) # support for violin
        v = k.evaluate(x) #violin profile (density curve)
        v = v/v.max()*w #scaling the violin to the available space
        ax.fill_betweenx(x,p,v+p,facecolor='y',alpha=0.3)
        ax.fill_betweenx(x,p,-v+p,facecolor='y',alpha=0.3)
    if bp:
        ax.boxplot(data,notch=1,positions=pos,vert=1)

groups = range(3)
a = np.random.normal(size=100)
b = np.random.normal(size=100)
c = np.random.normal(size=100)

data = np.vstack((a,b,c))
fig = pl.figure()
ax = fig.add_subplot(111)
violin_plot(ax,data,groups,bp=0)
pl.show()
这会产生如下图形:

我想做的是更改记号标记的标签,这样就不用-0.5到2.5乘0.5的数字,而是在0.0处有一个“A”,在1.0处有一个“B”,在2.0处有一个“C”


有没有简单的方法可以做到这一点?

在调用
pl.show
之前,请使用:

ax.set_xticks([0, 1, 2])
ax.set_xticklabels(['A', 'B', 'C'])

如果标签比小提琴宽,此方法会使所有标签重叠。但是对于大多数其他情况很有用,标签A、B和C重叠吗?如果使用较长的标签,则可以设置其他参数,如标签的字体大小和旋转。还可以引入换行符。但我不认为在你的例子中这会是一个问题。我没有给出一个例子,就在“标签比小提琴宽”的时候。我不知道你可以旋转标签。这对我很有帮助,谢谢:)