问题描述
作为初学者,这是我第一次使用较大的数据集进行聚类。有人可以帮我解决这个问题。
这是我的代码:
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()
这是我的散点图:
解决方法
一个简单的选择是更改图形大小并使它真正变大(如您所做的)。或者,您也可以更改比例,使数字真正变大。
但是对我来说,只有在不使用交互式后端但例如使用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')