这是问题图片,可以看出即使旋转了90°并且只选择只展示最前面的10个数据点,还是不能全部显示名字。
修改如下:
plt.xticks(ticks=list(range(len(data["名字"]))), labels=data["名字"])
这里用labels替换ticks,使得x轴能够显示labels。注:我这里的data是dataframe数据类型,然后选择“名字”这一列作为横坐标。
更改后如下:
可以看出横坐标正常了。
顺带附上此部分代码以供参考:
def draw_and_save_plots(data, selected_columns):
font = FontProperties(fname="input/simsun.ttc", size=12) # 设置中文字体
font_small = FontProperties(fname="input/simsun.ttc", size=8) # 设置中文字体
selected_data = data[selected_columns]
# 设置名字列为索引
selected_data.set_index('名字', inplace=True)
# 绘制曲线趋势图
ax = selected_data.plot.line(style=['r-', 'k-'], marker='o', figsize=(10, 6))
# 添加标签和标题,并设置字体
ax.set_xlabel('名字', fontproperties=font)
ax.set_ylabel('数值', fontproperties=font)
ax.set_title('生命值和攻击力曲线趋势图', fontproperties=font)
# 调整坐标轴使其全部显示(但不能解决不显示名称的问题)
# ax.xaxis.set_major_locator(plt.MaxNLocator(len(selected_data.index)))
# 调整坐标轴使其全部显示
plt.xticks(ticks=list(range(len(data["名字"]))), labels=data["名字"])
for label in ax.get_xticklabels():
label.set_fontproperties(font_small)
label.set_rotation(90) # 旋转
# 显示图例
ax.legend(['生命值', '攻击力'], prop=font)
# 显示图形
plt.show()
plt.close()