Как настроить заголовок и метки осей на гистограмме этого графика?

#python-3.x #matplotlib #histogram

#python-3.x #matplotlib #гистограмма

Вопрос:

Я хочу добавить заголовок ‘Magnitude’ в правой части оси y гистограммы. Также хотите добавить заголовок точечного графика внутри фрейма. Как это сделать? Могу ли я добавить эти функции с помощью однострочника?

мой код и выходной рисунок приведены ниже

 # definitions for the axes
left, width = 0.1, 0.65 #width : width of the main plot(Xaxis length)
bottom, height = 0.1, 0.4 #height : height of the main plot(Yaxis length)
spacing = 0.010 # gap between the plots


rect_scatter = [left, bottom, width, height]

rect_histx = [left, bottom   height   spacing, width, 0.2]

rect_histy = [left   width   spacing, bottom, 0.2, height]

# start with a square Figure
fig = plt.figure(figsize=(8, 10))

ax = fig.add_axes(rect_scatter)
ax_histx = fig.add_axes(rect_histx, sharex=ax)
ax_histy = fig.add_axes(rect_histy, sharey=ax)

# use the previously defined function
scatter_hist(df.YearDeci,df.Magnitude,ax,ax_histx,ax_histy,binx,biny)

ax.set_xticks(np.arange(t1,t2,5))
extraticks=[2018]
ax.set_xticks(list(ax.get_xticks())   extraticks)

plt.show()
#######################################################
def scatter_hist(x, y,ax,ax_histx,ax_histy,binx,biny):
    # no labels
    ax_histx.tick_params(axis="x", labelbottom=False)
    ax_histx.set(ylabel='Number of events',title='Time',facecolor='lightgray')
    
    ax_histy.tick_params(axis="y", labelleft=False)
    ax_histy.set(xlabel='Number of events',facecolor='lightgray')
    ax_histy.yaxis.set_label_position("right")

    # the scatter plot:
    ax.scatter(x, y,  facecolor='yellow', alpha=0.75,edgecolor='black',linewidth=0.5,s=30)
    plt.setp(ax.get_xticklabels(), rotation = 90,fontsize=10)
    ax.set(xlabel='Time',ylabel='Number of events',facecolor='lightgray')


    # now determine nice limits by hand:

    ax_histx.hist(x, bins=binx, density=False, facecolor='r', alpha=0.75,edgecolor='black',linewidth=0.5)
    ax_histy.hist(y, bins=biny,  density=False, facecolor='r', alpha=0.75,edgecolor='black',linewidth=0.5,orientation='horizontal')
   
    

  

введите описание изображения здесь

Комментарии:

1. Для заголовка есть параметр y, который вы можете установить.

Ответ №1:

Вместо заголовка просто добавьте текст к этой оси. Вы можете поворачивать и располагать его так, как вам нравится. Вот пример.

 ax_histy.text(left   width   spacing   0.2   0.1, bottom   0.5*height, 'test',
    horizontalalignment='center',
    verticalalignment='center',
    rotation=270,
    fontsize=12,
    transform=ax_histy.transAxes)
  

кажется, в вашем случае все работает нормально. Поиграйте с расположением и размером, чтобы получить его так, как вы хотите.

введите описание изображения здесь

Комментарии:

1. Сделайте это комментарием, а не ответом

2. @John Как включить заголовок точечной диаграммы вверху, внутри рамки?

3. @John Возможно ли добавить заголовок в рамках сюжета, используя ax.title?

4. Вы должны иметь возможность добавлять заголовок диаграммы рассеяния таким же образом, просто ссылаться на ось диаграммы рассеяния, регулировать положение и удалять параметр поворота