为了账号安全,请及时绑定邮箱和手机立即绑定

如何处理大量轴标签?

如何处理大量轴标签?

慕姐4208626 2023-08-03 16:19:52
作为初学者,这是我第一次使用更大的数据集进行聚类。有人可以帮我解决这个问题吗?这是我的代码:df1=BAR[['symbol','average_price']]  plt.figure(figsize=(40,30))  plt.scatter(df1['symbol'],df1['average_price']) plt.xlabel('SYMBOL',fontsize=15) plt.ylabel('AVERAGE_PRICE',fontsize=15)  plt.xticks(rotation=90,fontsize=12)    plt.show()这是我的散点图:
查看完整描述

1 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

一种简单的选择是更改图形大小并使其变得很大(就像您所做的那样)。或者您也可以更改比率并使数字变得非常宽泛。但对我来说,我只有在不使用交互式后端但例如使用Agg. 如果您保存图形并查看png文件,您可以看到额外的空间。我倾向于做的另一件事是以更智能的方式排列标签,以更好地利用空间。


例如,您可以将每隔一个标签向下移动并绘制更长的刻度线,在我看来,这看起来不那么局促。


import matplotlib as mpl

mpl.use('Agg')

import matplotlib.pyplot as plt


def change_tick_length(ax, i, size):

    h = ax.xaxis.get_majorticklines()

    i = np.ravel_multi_index((i, 0), (len(h)//2, 2))

    h[i].set_markersize(size)



n = 200

new_tick_length = 70

n_whitespace = int(new_tick_length / 3.3)  # found this ratio works for me


labels = [f"Dummy{i}" for i in range(n)]


fig = plt.figure(figsize=(40, 15))

ax = fig.subplots()

fig.subplots_adjust(bottom=0.3)

ax.plot(range(n))

ax.set_xticks(range(n))


for i, l in enumerate(labels):

    if i % 2 == 0:

        labels[i] = f"{l}{' ' * n_whitespace}"

        change_tick_length(ax=ax, i=i, size=new_tick_length)


ax.set_xticklabels(labels, rotation=90)

plt.savefig('dummy')

https://img1.sycdn.imooc.com//64cb637f0001ee1c20610721.jpg

查看完整回答
反对 回复 2023-08-03
  • 1 回答
  • 0 关注
  • 69 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信