使用的是jupyter notebook 用Matplotlib绘制的条形统计图,
怎么让这些字不重叠,因为是直接用
x=data_sort['name']
y=data_sort['nprg'] 导进去的文字,所以我也不知道怎么调文字大小,用不了fontsize
挤在一起好难认出来,尝试过好多种方法都没用。
谢邀!
对于坐标轴上的刻度重叠问题其实除了调整刻度大小来解决以外,还可以通过调节刻度的角度或者调整画板的大小来解决(代码我会放下面的)
如有帮助,请采纳!
我使用的测试代码如下:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
%matplotlib inline
y_3=[11,17,16,11,12,11,12,6,6]
y_10=[26,26,28,19,21,17,16,19,18]
x_3=range(1,10)
x_10=range(15,24)
plt.figure()
plt.scatter(x_3,y_3)
plt.scatter(x_10,y_10)
_x=list(x_3)+list(x_10)
_xtick_labels=['3月{}日'.format(i) for i in x_3]
_xtick_labels+=['10月{}日'.format(i-14) for i in x_10]
plt.xticks(_x,_xtick_labels)
plt.show()
测试代码结果如下:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
%matplotlib inline
y_3=[11,17,16,11,12,11,12,6,6]
y_10=[26,26,28,19,21,17,16,19,18]
x_3=range(1,10)
x_10=range(15,24)
plt.figure()
plt.scatter(x_3,y_3)
plt.scatter(x_10,y_10)
_x=list(x_3)+list(x_10)
_xtick_labels=['3月{}日'.format(i) for i in x_3]
_xtick_labels+=['10月{}日'.format(i-14) for i in x_10]
plt.xticks(_x,_xtick_labels)
# TODO 设置刻度大小
plt.tick_params(labelsize=4)
plt.show()
调节刻度大小结果如下:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
%matplotlib inline
y_3=[11,17,16,11,12,11,12,6,6]
y_10=[26,26,28,19,21,17,16,19,18]
x_3=range(1,10)
x_10=range(15,24)
plt.figure()
plt.scatter(x_3,y_3)
plt.scatter(x_10,y_10)
_x=list(x_3)+list(x_10)
_xtick_labels=['3月{}日'.format(i) for i in x_3]
_xtick_labels+=['10月{}日'.format(i-14) for i in x_10]
# TODO设置x轴刻度和角度
plt.xticks(_x,_xtick_labels,rotation=90)
plt.show()
结果如下:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
%matplotlib inline
y_3=[11,17,16,11,12,11,12,6,6]
y_10=[26,26,28,19,21,17,16,19,18]
x_3=range(1,10)
x_10=range(15,24)
# TODO 调整画板大小
plt.figure(figsize=(20,4))
plt.scatter(x_3,y_3)
plt.scatter(x_10,y_10)
_x=list(x_3)+list(x_10)
_xtick_labels=['3月{}日'.format(i) for i in x_3]
_xtick_labels+=['10月{}日'.format(i-14) for i in x_10]
plt.xticks(_x,_xtick_labels)
plt.show()
结果如下:
结合使用:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
%matplotlib inline
y_3=[11,17,16,11,12,11,12,6,6]
y_10=[26,26,28,19,21,17,16,19,18]
x_3=range(1,10)
x_10=range(15,24)
# TODO
plt.figure(figsize=(10,8))
plt.scatter(x_3,y_3)
plt.scatter(x_10,y_10)
_x=list(x_3)+list(x_10)
_xtick_labels=['3月{}日'.format(i) for i in x_3]
_xtick_labels+=['10月{}日'.format(i-14) for i in x_10]
# TODO
plt.xticks(_x,_xtick_labels,rotation=90)
# TODO
plt.tick_params(labelsize=24)
plt.show()
结果如下:
plt.xticks(rotation=90) # 旋转90度
# 或者旋转30°