我正试图写一个小套件的定期海运阴谋,沿着造型,以允许定期生产类似风格的阴谋。我在做条形图。大多数情况下,这很好,但如果我在x轴上有太多的值,特别是,如果名称太长和太多,轴刻度标签会完全混乱,这意味着图变得无用。
我真的很感激任何可以帮助我使x轴上的刻度总是信息丰富的建议,当我有一个场景,我有很多值标签的数据,我试图可视化。我意识到我可以把标签贴在条形图上,但我想把它作为x轴的刻度。
这里有一个x轴变得无意义的例子。我使用的数据取自这里https://footystats.org/england/premier-league/xg:
下面是我的示例代码:
def bar_plot(self,
df: pd.DataFrame,
x_var: str,
y_var: str,
x_label: str,
y_label: str,
y_line: float,
rotate_x_labels: bool = False,
export: bool = False,
filepath: str = None):
'''
produces a bar plot.
'''
plt.figure(figsize=self.figsize)
ax = sns.barplot(data=df,
x=x_var,
y=y_var,
palette=self.plot_elems_palette)
ax.spines['bottom'].set_linewidth(0.75)
ax.spines['left'].set_linewidth(0.75)
ax.tick_params(axis='x', which='major', width=0.5)
ax.tick_params(axis='x', which='minor', width=0.5)
ax.tick_params(axis='y', which='major', width=0.5)
ax.tick_params(axis='y', which='minor', width=0.5)
if x_label:
ax.set_xlabel(x_label, fontweight='bold')
if y_label:
ax.set_ylabel(y_label, fontweight='bold')
if y_line is not None:
ax.axhline(y_line,
color=self.plot_elems_colour,
linestyle='--',
linewidth=0.5)
if rotate_x_labels:
ax.tick_params(axis='x', rotation=45)
ax.tick_params(axis='both', labelsize=(self.font_size*0.5), rotation=45)
if export:
if filepath:
plt.savefig(filepath,
dpi=DPI,
bbox_inches=BBOX)
else:
raise ValueError('filepath must be specified if export is True')
plt.show()
这一切都存在于一个类中,它初始化了我所有绘图方法的默认值,看起来像这样:
class PlotBuilder:
def __init__(self,
figsize: tuple = FIGSIZE,
background: str = BACKGROUND,
body_colour: str = BODY_COLOUR,
plot_elems_colour: str = PLOT_ELEMS_COLOUR,
plot_elems_palette: list = generate_colour_palette(BODY_COLOUR),
grid_colour: str = GRID_COLOUR,
font: str = FONT,
font_size: int = FONT_SIZE):
self.figsize = figsize
self.background = background
self.body_colour = body_colour
self.plot_elems_colour = plot_elems_colour
self.plot_elems_palette = plot_elems_palette
self.grid_colour = grid_colour
self.font = font
self.font_size = font_size
1条答案
按热度按时间g52tjvyc1#
标签看起来很混乱,因为它们的“中心”在刻度下方对齐。如果您将标签的右端对齐在刻度下方,则在视觉上会更令人愉悦: