Fork me on Gitee

matplotlib 绘制双轴曲线 带焦点

ax.grid(

which='both', # 'major'|'minor'|'both'

axis='both',  # 'x'|'y'|'both'

linewidth=1,

linestyle='-',

color='red',

alpha=0.1

)

代码必须放在最后,否则出现交叉点重叠


复制代码
import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()


ax = fig.add_subplot(111)
ax.tick_params(left=False,labelleft=False,top=False,bottom=False,labelbottom=False,labeltop=False,right=True,labelright = True)
plt.title("xxxxxxxxxx")
plt.xlabel("Param drop(%)")
plt.ylabel("Accuracy(%)")

ax.tick_params("both",which ='both', length=5, width=1.0, labelsize=10, labelcolor='0.6', direction='in')




ax.set_ylim(0, 100)
ax.set_xlim(0, 10)
axt = ax.twinx()
axt.set_ylim(0,100)

x1 = [1,2,3,4,5,6,7,8]
y1 = [20,100,50,120,55,100,50,25]
x2 = [3,4,5,6,7,8,9]
y2 = [25,35,14,67,88,44,120]

ax.plot(x1, y1, color='lightblue',linewidth=2)
ax.plot(x2, y2, color='darkgreen', marker='^')


# Plot the cross point
x3 = np.linspace(6, 7, 1000)        # (6, 7) intersection range
y1_new = np.linspace(240, 50, 1000) # (6, 7) corresponding to (240, 50) in y1
y2_new = np.linspace(67, 88, 1000)  # (6, 7) corresponding to (67, 88) in y2

idx = np.argwhere(np.isclose(y1_new, y2_new, atol=0.1)).reshape(-1)
ax.plot(x3[idx], y2_new[idx], 'r*',)
ax.text(x3[idx], y2_new[idx]-5, '%.0f' % y2_new[idx],fontdict={'fontsize':14})


ax.grid(
    which='both', # 'major'|'minor'|'both'
    axis='both',  # 'x'|'y'|'both'
    linewidth=1,
    linestyle='-',
    color='red',
    alpha=0.1
)

plt.show()
复制代码


感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章页面中给出作者和原文连接
posted @   ---dgw博客  阅读(159)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2018-12-06 MySql8最新配置方式(完美)
2018-12-06 Java 标准IO高可用类
点击右上角即可分享
微信分享提示