#python #matplotlib #plot #seaborn
Вопрос:
Я ищу решение: как установить галочки для одного из трех подзаголовков в Сиборне?
Я знаю, что могу установить xticks
и/или yticks
для всех подзаголовков
#specify positions of ticks on x-axis and y-axis plt.xticks([15, 20, 25]) plt.yticks([4, 8, 12])
…но я не знаю, как я могу сделать это только для одного из трех подэтапов.
Я хочу установить другое yticks
для третьего подзаголовка в этом примере кода (я имею в виду ax3
).:
import seaborn as sns ts = pd.Series(df_1["total_purchase"]).str.split(expand=True) # split value from ` #python #matplotlib #plot #seaborn
Вопрос:
Я ищу решение: как установить галочки для одного из трех подзаголовков в Сиборне? Я знаю, что могу установить
xticks
и/илиyticks
для всех подзаголовков#specify positions of ticks on x-axis and y-axis plt.xticks([15, 20, 25]) plt.yticks([4, 8, 12])
...но я не знаю, как я могу сделать это только для одного из трех подэтапов.
Я хочу установить другое
yticks
для третьего подзаголовка в этом примере кода (я имею в видуax3
).:# df_1[["total_purchase"]] # print(ts[0]) df_1["purchase_float"] = ts[0].astype(float) # We need `float` for plotting df_1 = df_1.reset_index() # We need index as the first column sns.set_theme(style="whitegrid") fig, (ax1, ax2, ax3) = plt.subplots(3,1,figsize=(12,12)) sns.barplot(x='purchase_float', y='employee_name', data=df_1, ax=ax1) sns.barplot(y='customer_canada', x='employee_name', data=df_1, ax=ax2) sns.barplot(y='customer_dif_country', x='employee_name', data=df_1, ax=ax3) plt.subplots_adjust(hspace = 0.8) plt.show()
Вывод показывает отсутствие деталей в третьем подзаголовке.:
Комментарии:
1.
ax3.set_yticks([...])
? Илиfrom matplotlib.ticker import MultipleLocator
сax3.yaxis.set_major_locator(MultipleLocator(2))
кем ? Обратите внимание, чтоplt.yticks([...])
изменяется только «текущий график», который по умолчанию будет последним созданным.2. Привет, спасибо за отзыв. Мне нужно проверить ваше предложение:
from matplotlib.ticker import MultipleLocator with ax3.yaxis.set_major_locator(MultipleLocator(2))
. Для целей моего запроса это кажется излишним, но я все равно проверю это завтра, чтобы узнать, когда я смогу использовать этот подход.
Ответ №1:
Это должно сработать:
import seaborn as sns ts = pd.Series(df_1["total_purchase"]).str.split(expand=True) # split value from ` #python #matplotlib #plot #seaborn
Вопрос:
Я ищу решение: как установить галочки для одного из трех подзаголовков в Сиборне? Я знаю, что могу установитьxticks
и/илиyticks
для всех подзаголовков#specify positions of ticks on x-axis and y-axis plt.xticks([15, 20, 25]) plt.yticks([4, 8, 12])
...но я не знаю, как я могу сделать это только для одного из трех подэтапов.
Я хочу установить другое
yticks
для третьего подзаголовка в этом примере кода (я имею в видуax3
).:import seaborn as sns ts = pd.Series(df_1["total_purchase"]).str.split(expand=True) # split value from ` #python #matplotlib #plot #seaborn
Вопрос:
Я ищу решение: как установить галочки для одного из трех подзаголовков в Сиборне? Я знаю, что могу установить
xticks
и/илиyticks
для всех подзаголовков#specify positions of ticks on x-axis and y-axis plt.xticks([15, 20, 25]) plt.yticks([4, 8, 12])
...но я не знаю, как я могу сделать это только для одного из трех подэтапов.
Я хочу установить другое
yticks
для третьего подзаголовка в этом примере кода (я имею в видуax3
).:# df_1[["total_purchase"]] # print(ts[0]) df_1["purchase_float"] = ts[0].astype(float) # We need `float` for plotting df_1 = df_1.reset_index() # We need index as the first column sns.set_theme(style="whitegrid") fig, (ax1, ax2, ax3) = plt.subplots(3,1,figsize=(12,12)) sns.barplot(x='purchase_float', y='employee_name', data=df_1, ax=ax1) sns.barplot(y='customer_canada', x='employee_name', data=df_1, ax=ax2) sns.barplot(y='customer_dif_country', x='employee_name', data=df_1, ax=ax3) plt.subplots_adjust(hspace = 0.8) plt.show()
Вывод показывает отсутствие деталей в третьем подзаголовке.:
Комментарии:
1.
ax3.set_yticks([...])
? Илиfrom matplotlib.ticker import MultipleLocator
сax3.yaxis.set_major_locator(MultipleLocator(2))
кем ? Обратите внимание, чтоplt.yticks([...])
изменяется только "текущий график", который по умолчанию будет последним созданным.2. Привет, спасибо за отзыв. Мне нужно проверить ваше предложение:
from matplotlib.ticker import MultipleLocator with ax3.yaxis.set_major_locator(MultipleLocator(2))
. Для целей моего запроса это кажется излишним, но я все равно проверю это завтра, чтобы узнать, когда я смогу использовать этот подход.Ответ №1:
Это должно сработать:
# df_1[["total_purchase"]] # print(ts[0]) df_1["purchase_float"] = ts[0].astype(float) # We need `float` for plotting df_1 = df_1.reset_index() # We need index as the first column sns.set_theme(style="whitegrid") plt.figure(figsize=(16, 16)) plt.subplot(3, 1, 1) sns.barplot(x='purchase_float', y='employee_name', data=df_1) plt.subplot(3, 1, 2) sns.barplot(y='customer_canada', x='employee_name', data=df_1) plt.subplot(3, 1, 3) sns.barplot(y='customer_dif_country', x='employee_name', data=df_1) plt.yticks([4, 8, 12]) plt.subplots_adjust(hspace = 0.8) plt.show()
Вы можете настроить любой из подзаголовков аналогичным образом.
Комментарии:
1. Привет, ваш ответ (почти правильный). Проблема в том, что там не должно быть
ax=axn
раздела, пожалуйста, отредактируйте свой ответ(я опубликую полный ответ ниже в качестве ссылки). 😉 Я буду использовать тот подход, о котором вы упомянули. Кажется, все просто. Спасибо.
Ответ №2:
Я нашел полное решение своей проблемы, используя идею от #Elena_Kosourova.
Мой код:
import seaborn as sns ts = pd.Series(df_1["total_purchase"]).str.split(expand=True) # split value from ` #python #matplotlib #plot #seaborn
Вопрос:
Я ищу решение: как установить галочки для одного из трех подзаголовков в Сиборне? Я знаю, что могу установитьxticks
и/илиyticks
для всех подзаголовков#specify positions of ticks on x-axis and y-axis plt.xticks([15, 20, 25]) plt.yticks([4, 8, 12])
...но я не знаю, как я могу сделать это только для одного из трех подэтапов.
Я хочу установить другое
yticks
для третьего подзаголовка в этом примере кода (я имею в видуax3
).:import seaborn as sns ts = pd.Series(df_1["total_purchase"]).str.split(expand=True) # split value from ` #python #matplotlib #plot #seaborn
Вопрос:
Я ищу решение: как установить галочки для одного из трех подзаголовков в Сиборне? Я знаю, что могу установить
xticks
и/илиyticks
для всех подзаголовков#specify positions of ticks on x-axis and y-axis plt.xticks([15, 20, 25]) plt.yticks([4, 8, 12])
...но я не знаю, как я могу сделать это только для одного из трех подэтапов.
Я хочу установить другое
yticks
для третьего подзаголовка в этом примере кода (я имею в видуax3
).:# df_1[["total_purchase"]] # print(ts[0]) df_1["purchase_float"] = ts[0].astype(float) # We need `float` for plotting df_1 = df_1.reset_index() # We need index as the first column sns.set_theme(style="whitegrid") fig, (ax1, ax2, ax3) = plt.subplots(3,1,figsize=(12,12)) sns.barplot(x='purchase_float', y='employee_name', data=df_1, ax=ax1) sns.barplot(y='customer_canada', x='employee_name', data=df_1, ax=ax2) sns.barplot(y='customer_dif_country', x='employee_name', data=df_1, ax=ax3) plt.subplots_adjust(hspace = 0.8) plt.show()
Вывод показывает отсутствие деталей в третьем подзаголовке.:
Комментарии:
1.
ax3.set_yticks([...])
? Илиfrom matplotlib.ticker import MultipleLocator
сax3.yaxis.set_major_locator(MultipleLocator(2))
кем ? Обратите внимание, чтоplt.yticks([...])
изменяется только "текущий график", который по умолчанию будет последним созданным.2. Привет, спасибо за отзыв. Мне нужно проверить ваше предложение:
from matplotlib.ticker import MultipleLocator with ax3.yaxis.set_major_locator(MultipleLocator(2))
. Для целей моего запроса это кажется излишним, но я все равно проверю это завтра, чтобы узнать, когда я смогу использовать этот подход.Ответ №1:
Это должно сработать:
import seaborn as sns ts = pd.Series(df_1["total_purchase"]).str.split(expand=True) # split value from ` #python #matplotlib #plot #seaborn
Вопрос:
Я ищу решение: как установить галочки для одного из трех подзаголовков в Сиборне? Я знаю, что могу установитьxticks
и/илиyticks
для всех подзаголовков#specify positions of ticks on x-axis and y-axis plt.xticks([15, 20, 25]) plt.yticks([4, 8, 12])
...но я не знаю, как я могу сделать это только для одного из трех подэтапов.
Я хочу установить другое
yticks
для третьего подзаголовка в этом примере кода (я имею в видуax3
).:import seaborn as sns ts = pd.Series(df_1["total_purchase"]).str.split(expand=True) # split value from ` #python #matplotlib #plot #seaborn
Вопрос:
Я ищу решение: как установить галочки для одного из трех подзаголовков в Сиборне? Я знаю, что могу установить
xticks
и/илиyticks
для всех подзаголовков#specify positions of ticks on x-axis and y-axis plt.xticks([15, 20, 25]) plt.yticks([4, 8, 12])
...но я не знаю, как я могу сделать это только для одного из трех подэтапов.
Я хочу установить другое
yticks
для третьего подзаголовка в этом примере кода (я имею в видуax3
).:# df_1[["total_purchase"]] # print(ts[0]) df_1["purchase_float"] = ts[0].astype(float) # We need `float` for plotting df_1 = df_1.reset_index() # We need index as the first column sns.set_theme(style="whitegrid") fig, (ax1, ax2, ax3) = plt.subplots(3,1,figsize=(12,12)) sns.barplot(x='purchase_float', y='employee_name', data=df_1, ax=ax1) sns.barplot(y='customer_canada', x='employee_name', data=df_1, ax=ax2) sns.barplot(y='customer_dif_country', x='employee_name', data=df_1, ax=ax3) plt.subplots_adjust(hspace = 0.8) plt.show()
Вывод показывает отсутствие деталей в третьем подзаголовке.:
Комментарии:
1.
ax3.set_yticks([...])
? Илиfrom matplotlib.ticker import MultipleLocator
сax3.yaxis.set_major_locator(MultipleLocator(2))
кем ? Обратите внимание, чтоplt.yticks([...])
изменяется только "текущий график", который по умолчанию будет последним созданным.2. Привет, спасибо за отзыв. Мне нужно проверить ваше предложение:
from matplotlib.ticker import MultipleLocator with ax3.yaxis.set_major_locator(MultipleLocator(2))
. Для целей моего запроса это кажется излишним, но я все равно проверю это завтра, чтобы узнать, когда я смогу использовать этот подход.Ответ №1:
Это должно сработать:
# df_1[["total_purchase"]] # print(ts[0]) df_1["purchase_float"] = ts[0].astype(float) # We need `float` for plotting df_1 = df_1.reset_index() # We need index as the first column sns.set_theme(style="whitegrid") plt.figure(figsize=(16, 16)) plt.subplot(3, 1, 1) sns.barplot(x='purchase_float', y='employee_name', data=df_1) plt.subplot(3, 1, 2) sns.barplot(y='customer_canada', x='employee_name', data=df_1) plt.subplot(3, 1, 3) sns.barplot(y='customer_dif_country', x='employee_name', data=df_1) plt.yticks([4, 8, 12]) plt.subplots_adjust(hspace = 0.8) plt.show()
Вы можете настроить любой из подзаголовков аналогичным образом.
Комментарии:
1. Привет, ваш ответ (почти правильный). Проблема в том, что там не должно быть
ax=axn
раздела, пожалуйста, отредактируйте свой ответ(я опубликую полный ответ ниже в качестве ссылки). 😉 Я буду использовать тот подход, о котором вы упомянули. Кажется, все просто. Спасибо.Ответ №2:
Я нашел полное решение своей проблемы, используя идею от #Elena_Kosourova.
Мой код:
# df_1[["total_purchase"]] # print(ts[0]) df_1["purchase_float"] = ts[0].astype(float) # We need `float` for plotting df_1 = df_1.reset_index() # We need index as the first column sns.set_theme(style="whitegrid") plt.figure(figsize=(16, 16)) plt.subplot(3, 1, 1) sns.barplot(x='purchase_float', y='employee_name', data=df_1) plt.xticks([250, 500, 750, 1000, 1393, 1584, 1731]) plt.xticks(fontsize=24) plt.yticks(fontsize=24) plt.xlabel("total purchase in USD", fontsize=18) plt.ylabel("", fontsize=18) plt.title('employee income', fontsize=30) plt.subplot(3, 1, 2) sns.barplot(y='customer_canada', x='employee_name', data=df_1) plt.xticks(fontsize=24) plt.yticks(fontsize=24) plt.ylabel("canada customers", fontsize=18) plt.xlabel("", fontsize=18) plt.title("employee's clients from Canada", fontsize=30) plt.subplot(3, 1, 3) sns.barplot(y='customer_dif_country', x='employee_name', data=df_1) plt.yticks([4, 8, 12, 16, 19]) plt.xticks(fontsize=24) plt.yticks(fontsize=24) plt.ylabel("foreign customers", fontsize=18) plt.xlabel("", fontsize=18) plt.title("the employee's foreign customers", fontsize=30) plt.subplots_adjust(hspace = 0.8) # space between subplots plt.show()