Ярлыки значений только для одной серии баров

Я пытаюсь создать гистограмму для моих данных. Идея состоит в том, что число Available Shops бары перекрывают Users бары, так что в основном два столбца на одной фигуре. Мой код работает, но у меня есть проблема:

В настоящее время он создает метки значений для обеих серий, хотя я хочу это только для Users, Я хотел бы повторно запустить функцию метки значения для "Магазины" с другой настройкой (цвет, где метка и т. Д.).

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
from matplotlib import gridspec
import seaborn as sns

years = list(np.arange(1999,2015))
users = list(np.random.randint(1500, 5000, 16))
shops = list(np.random.randint(400, 600, 16))

df = pd.DataFrame({"Year": years,
                   "Users" : users,
                    "Available Shops" : shops})

# Graph
SMALL_SIZE = 10
MEDIUM_SIZE = 12
BIGGER_SIZE = 14
sns.set_style(style ="whitegrid")

    # overall settings:
plt.rc('text', usetex=True)
plt.rc('font', family='serif')
plt.rc('font', size=SMALL_SIZE)          # controls default text sizes
plt.rc('axes', titlesize=MEDIUM_SIZE)     # fontsize of the axes title
plt.rc('axes', labelsize=MEDIUM_SIZE)    # fontsize of the x and y labels
plt.rc('xtick', labelsize=SMALL_SIZE)    # fontsize of the tick labels
plt.rc('ytick', labelsize=SMALL_SIZE)    # fontsize of the tick labels
fig = plt.figure(figsize=(7,4))
ax = plt.subplot()

ax1 = sns.barplot(x="Year", y="Users", data=df, color='blue')
ax2 = sns.barplot(x="Year", y='Available Shops', data=df, color='red')

ax.set_xlabel("Year")
ax.set_ylabel("Number")

for p in ax1.patches:
    ax1.text(p.get_x() + p.get_width()/2., p.get_height() + 1, '%d' % int(p.get_height()),
            fontsize=SMALL_SIZE, color='black', ha='center', va='bottom')

ax.grid(False)
sns.despine(top=True, right=True)
plt.tight_layout()
plt.show()

При необходимости я могу смоделировать данные.

0 ответов

Другие вопросы по тегам