python - matplotlib 共享轴 (twinx) 隐藏 y_axis 值
问题描述
我正在使用该ax2 = ax1.twinx()
属性在同一个图中有多个具有不同缩放比例的图形(3),不幸的是,y 轴的值“相互叠加”,如此处所示(右侧 y 轴,蓝色值是有时隐藏)
这是供参考的图表代码
fig, ax1 = plt.subplots()
mpl.rcParams['lines.linewidth'] = 0.4
SMOOTH_FAC = 0.85
color = 'tab:red'
ax1.set_xlabel('Iterations')
ax1.set_ylabel('Non metric loss', color=color)
ax1.plot(smooth(net_loss,SMOOTH_FAC), color=color)
ax1.tick_params(axis='y', labelcolor=color)
ax2 = ax1.twinx() # instantiate a second axes that shares the same x-axis
color = 'tab:blue'
ax2.set_ylabel('Metric supervised loss', color=color) # we already handled the x-label with ax1
ax2.plot(smooth(metric_super_loss,SMOOTH_FAC), color=color)
ax2.tick_params(axis='y', labelcolor=color)
ax3 = ax1.twinx()
color = 'tab:orange'
ax3.set_ylabel('Supervised loss', color=color,labelpad=20) # we already handled the x-label with ax1
ax3.plot(smooth(supervised_loss,SMOOTH_FAC),color=color, zorder=1)
ax3.tick_params(axis='y', labelcolor=color)
ax1.set_zorder(ax2.get_zorder()+ax3.get_zorder()+1)
ax1.patch.set_visible(False)
fig.tight_layout()
解决方案
您可以使用get_yaxis().set_ticks()
每个轴并将刻度设置为空白列表[]
ax1.get_yaxis().set_ticks([])
ax2.get_yaxis().set_ticks([])
ax2.get_yaxis().set_ticks([])
或者您可以使用该set_yticklabels()
功能为每个轴设置刻度。
ax1.set_yticklabels([])
ax2.set_yticklabels([])
ax3.set_yticklabels([])
或者您可以为每个轴添加left=False, right=False, labelleft=False, labelright=False
参数tick_params()
ax1.tick_params(axis='y', labelcolor=color,left=False, right=False,labelleft=False, labelright=False)
第一个更干净。
推荐阅读
- css - 带有渐变边框和角落突出显示的按钮
- sqlite - 我如何构建 sqlcipher .. mingw
- python - Python keyError: 'stop_time' / Facebook API 运行文件
- powershell - 在powershell选项卡自动完成中更改过滤器方法
- firebase - 类似 Tinder 的应用程序的 Firestore 数据建模和查询
- html - 如何防止滚动条推送元素?
- node.js - Array of Array 的 Vuex 状态未定义
- azure - 获取 azure 数据湖目录中所有文件的列表以在 ADFV2 中查找活动
- python - 使用字符串值在数据框中追加列
- swift - 在 UIImageView 中创建一个圆孔