如何在Python的Matplotlib断裂条形图中移除重复Y值10.00
解决Matplotlib断裂条形图重复刻度问题
针对断裂条形图中重复显示的10.00刻度,可通过以下几种方法处理:
方法1:手动筛选并设置坐标轴刻度
假设你有上下两个子图轴ax1(上方)和ax2(下方),可以合并刻度后去重,再分别设置:
# 获取两个轴的现有刻度 ticks_ax1 = ax1.get_xticks() ticks_ax2 = ax2.get_xticks() # 合并并去重,得到唯一刻度列表 unique_ticks = sorted(list(set(ticks_ax1) | set(ticks_ax2))) # 让其中一个轴保留所有刻度,另一个轴移除重复的10.0 ax1.set_xticks(unique_ticks) ax2.set_xticks([t for t in unique_ticks if t != 10.0])
方法2:自定义刻度标签隐藏重复项
如果不想改变刻度位置,仅隐藏重复的10.00标签:
# 以隐藏上方轴的10.00标签为例 ax1_labels = [txt if txt != '10.00' else '' for txt in [label.get_text() for label in ax1.get_xticklabels()]] ax1.set_xticklabels(ax1_labels) # 若想让下方轴隐藏,只需替换为ax2即可
方法3:创建子图时共享坐标轴
如果是通过子图构建的断裂图,创建子图时设置sharex=True,让两个子图共享x轴刻度,自然只会显示一次:
import matplotlib.pyplot as plt # 创建共享x轴的上下子图 fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True, figsize=(8, 6)) # 在ax1绘制上方断裂条形,ax2绘制下方部分 ax1.broken_barh([(0, 5), (15, 10)], (1, 0.5)) ax2.broken_barh([(5, 10)], (1, 0.5))
内容的提问来源于stack exchange,提问作者Denise Lavezzari
相关产品推荐
相关产品推荐

