【Matplotlib】x轴标签过多导致重叠、遗漏错位问题解决 |
您所在的位置:网站首页 › 双柱状图重叠怎么办 › 【Matplotlib】x轴标签过多导致重叠、遗漏错位问题解决 |
问题描述
用Matplotlib画数据图时需要对x轴添加标签,但由于数据量比较大(x轴30刻度,y轴20000),导致标签会重叠,完全看不清什么是什么,如图所示,于是便在matplotlib官方文档里面查找解决问题的办法。 fig的大小很有可能就是造成该问题的原因,所以适当调节figsize: # 绘制图表 fig, ax = plt.subplots(figsize=(10, 8)) 方法二 将标签进行一定角度的旋转以错开标签注:speed 为本人所绘制图的x轴标签列表 ax.set_xticks(np.arange(len(speed)), labels=speed, rotation=90)效果如下: 此外,在绘制图形的过程中我首先是从matplotlib里面import了tiker,采用了对x轴添加刻度来解决重叠问题,但是却发生了遗漏错位: ax.xaxis.set_major_locator(ticker.MultipleLocator(1)) # 设置x轴标签间隔出现了一个UserWarning: UserWarning: FixedFormatter should only be used together with FixedLocator查找资料后发现,原来该方法只能在使用axis .set_xticks固定刻度位置之后使用。否则,标签可能会出现在意想不到的位置(即可能遗漏错位)。故我便用了np.arange(len(speed))来设置刻度范围,之后我发现用ax.set_ticks即可满足我对x轴标签设置的问题。 源码 #!usr/bin/env python3 # !-*- coding = utf-8 -*- import os from matplotlib import cm, colors from sklearn import preprocessing import matplotlib.ticker as ticker import matplotlib.pyplot as plt import numpy as np import pandas as pd plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号 dirPath = r'file.path' # 文件存储路径 DATA_file = os.path.join(dirPath, "file.csv") # 文件名称 DATA_data = pd.read_csv(Noise_file, sep=",", encoding='utf-8').to_numpy(dtype=float) # 将转速数据转换为字符串列表 data2_file = os.path.join(dirPath, "dile2.csv") data2_file_data = pd.read_csv(data2_file, sep=',', encoding='utf-8', header=None).to_numpy(dtype=str) # 为了读取第1行数据,需要设置header=None # print(data2_file_data.item(0)) DATA2 = [] for i in range(0, len(data2_file_data), 1): DATA2.append(data2_file_data.item(i)) # print(DATA2) # file数据归一化 file_data = pd.read_csv(file_file, sep=",", encoding='utf-8') min_max_normalizer = preprocessing.MinMaxScaler(feature_range=(0, 1)) # feature_range设置最大最小变换值(0, 1) scaled_data = min_max_normalizer.fit_transform(file_data) # 将数据缩放(映射)到设置固定区间 file_data_normalized = scaled_data # 获取file数据归一化后的最大最小值 minvalue = np.min(Noise_data_normalized) maxvalue = np.max(Noise_data_normalized) # 绘制图表 fig, ax = plt.subplots(figsize=(10, 8)) cmap = 'Blues' # colobar颜色样式 ax.matshow(file_data_normalized, aspect='auto', cmap=cmap, extent=(0, 30, 0, 19999), interpolation='nearest') # 将 2D 矩阵或数组可视化为颜色编码的图像 cNorm = colors.Normalize(minvalue, maxvalue) # 定义colorbar的范围 scalarMap = cm.ScalarMappable(norm=cNorm, cmap=cmap) # colorbar的参数导入 plt.colorbar(scalarMap, shrink=1, pad=0.1) # shrink按比例缩小色图,pad为色图与绘图的距离 # ax.xaxis.set_major_locator(ticker.MultipleLocator(1)) # 设置x轴标签间隔 ax.set_xticks(np.arange(len(DATA2)), labels=DATA2, rotation=90) ax.yaxis.set_major_locator(ticker.MultipleLocator(1000)) # 设置y轴标签间隔 # ax.set_xticklabels(DATA2, rotation=90) # 将标签进行旋转 ax.xaxis.set_ticks_position('bottom') # 把x轴标签放在下面 plt.title('file颜色图') plt.show() |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |