猿问

如何使用 matplotlib 和 seaborn 在绘图值上显示轴刻度标签?

我正在使用 matplotlib 和 seaborn 来散点图包含在两个数组 x 和 y 中的一些数据(二维图)。这里的问题是在数据上显示两个轴标签时,因为绘制的数据与值重叠,因此看不见。


我尝试了不同的可能性,例如在绘图完成后重置标签并稍后设置它们,或者使用注释标记。无论如何,这些选项中的任何一个都对我有用......


我用来生成这个散点图的代码是:


sns.set_style("whitegrid")


ax = sns.scatterplot(x=x, y=y, s=125)


ax.set_xlim(-20, 20)

ax.set_ylim(-20, 20)


ax.spines['left'].set_position('zero')

ax.spines['left'].set_color('black')


ax.spines['right'].set_color('none')

ax.yaxis.tick_left()


ax.spines['bottom'].set_position('zero')

ax.spines['bottom'].set_color('black')


ax.spines['top'].set_color('none')

ax.xaxis.tick_bottom()


values = ax.get_xticks()

ax.set_xticklabels(["{0:.0%}".format(x/100) for x in values])


values = ax.get_yticks()

ax.set_yticklabels(["{0:.0%}".format(y/100) for y in values])


ax.tick_params(axis='both', which='major', labelsize=15)


ax.grid(True)

生成的图如下: 

但所需的输出应该是这样的:

http://img3.mukewang.com/61e676740001f46007060401.jpg

心有法竹
浏览 317回答 1
1回答

ABOUTYOU

您需要两件事:zorder以及刻度标签的bold权重。散点的zorder数量需要低于刻度标签的数量,以便后者出现在顶部。'fontweight': 'bold'是有粗体刻度标签。轴似乎偏离了 0,但那是因为您没有提供任何数据。所以我必须选择一些随机数据# import commands herex = np.random.randint(-100, 100, 10000)y = np.random.randint(-100, 100, 10000)ax = sns.scatterplot(x=x, y=y, s=125, zorder=-1)# Rest of the codevalues = ax.get_xticks()ax.set_xticklabels(["{0:.0%}".format(x/100) for x in values], fontdict={'fontweight': 'bold'})values = ax.get_yticks()ax.set_yticklabels(["{0:.0%}".format(y/100) for y in values], fontdict={'fontweight': 'bold'})ax.tick_params(axis='both', which='major', labelsize=15, zorder=1)ax.grid(True)
随时随地看视频慕课网APP

相关分类

Python
我要回答