概述
# 不同模型的ROC曲线
lable_names = ["逻辑回归","SVM","神经网络","随机森林","决策树"] # 模型名称
colors = ["r","b","g","m","k",] # 不同曲线颜色
linestyles =["-", "--", "-.", ":", "-"] #不同曲线
fig = plt.figure(figsize=(8,7),dpi=150)
for n in range(5):
## 计算绘制ROC曲线的取值
plt.plot(fpr[n], tpr[n],color=colors[n],linewidth = 2,
linestyle = linestyles[n],
label = f'AUC={auc[n]} '+lable_names[n])
plt.plot([0, 1], [0, 1], 'k--')
plt.xlabel("假正率"); plt.ylabel("真正率")
plt.xlim(0, 1); plt.ylim(0, 1)
plt.grid()
plt.legend()
plt.title("不同模型的ROC曲线")
## 放大的图片
inset_ax = fig.add_axes([0.3, 0.45, 0.4, 0.4],facecolor="white")
for n in range(5):
## 放大的图
inset_ax.plot(fpr[n], tpr[n],color=colors[n],linewidth = 2,linestyle = linestyles[n],
label = f'AUC={auc[n]} '+lable_names[n])
inset_ax.set_xlim([-0.1,1])
inset_ax.set_ylim([0.7,1.01])
inset_ax.grid()
plt.show()
# 残差图——检验自相关
def e_picture_auto(self):
#创建画布
fig = plt.figure(figsize=(8, 8))
#使用axisartist.Subplot方法创建一个绘图区对象ax
ax = axisartist.Subplot(fig, 111)
#将绘图区对象添加到画布中
fig.add_axes(ax)
#通过set_visible方法设置绘图区所有坐标轴隐藏
ax.axis[:].set_visible(False)
#ax.new_floating_axis代表添加新的坐标轴
ax.axis["x"] = ax.new_floating_axis(0,0)
#给x坐标轴加上箭头
ax.axis["x"].set_axisline_style("->", size = 1.0)
#添加y坐标轴,且加上箭头
ax.axis["y"] = ax.new_floating_axis(1,0)
ax.axis["y"].set_axisline_style("-|>", size = 1.0)
#设置x、y轴上刻度显示方向
ax.axis["x"].set_axis_direction("top")
ax.axis["y"].set_axis_direction("right")
plt.scatter(self.e.values[:-1],self.e.values[1:], marker='.')
# 标注某个点
plt.annotate("异常值", (-7,63), xycoords='data',xytext=(-20, 55),arrowprops=dict(arrowstyle='->'),fontsize=15)
plt.annotate("异常值", (63,-8), xycoords='data',xytext=(45, -8),arrowprops=dict(arrowstyle='->'),fontsize=15)
plt.annotate(r"$e_t$", (-3,67), xycoords='data',xytext=(-4,67),fontsize=15) # ,arrowprops=dict(arrowstyle='-') # y标签
plt.annotate(r"$e_{t-1}$", (67,5), xycoords='data',xytext=(67,-4),fontsize=15) # x标签
plt.annotate(r"$O$", (67,5), xycoords='data',xytext=(-3,2),fontsize=15) # 原坐标标签
# 局部放大图
inset_ax = fig.add_axes([0.45, 0.45, 0.4, 0.4],facecolor="white")
## 放大的图
inset_ax.scatter(self.e.values[:-1],self.e.values[1:])
inset_ax.set_xlim([-12,5])
inset_ax.set_ylim([-12,5])
inset_ax.annotate("", (-11,0), xycoords='data',arrowprops=dict(arrowstyle='<-'),xytext=(5,0),fontsize=12) # 添加原坐标标签# inset_ax.axhline(y=0,c="black", lw=0.5) # 添加水平线
inset_ax.annotate("", (0,-11), xycoords='data',arrowprops=dict(arrowstyle='<-'),xytext=(0,4),fontsize=12)# inset_ax.axvline(x=0,c="black", lw=0.5) # 添加纵轴线
inset_ax.annotate(r"$O$", (-1,0.5), xycoords='data',xytext=(-1,0.5),fontsize=12) # 添加原坐标标签
inset_ax.spines['right'].set_visible(False)
inset_ax.spines['top'].set_visible(False)
inset_ax.text(-10,4, '局部放大图', bbox=dict(facecolor='yellow', alpha=0.5), fontsize=15) # 添加文本
from mpl_toolkits.axes_grid1.inset_locator import mark_inset
fig, ax = plt.subplots(1, 1)
ax.boxplot(pht.平均小时人气)
# plt.ylim(0, 100000)
inset_ax = fig.add_axes([1, 0.45, 0.3, 0.4],facecolor="white")
inset_ax.boxplot(pht.平均小时人气)
inset_ax.set_ylim(0, 50000)
inset_ax.set_xlim(0.85,1.15)
inset_ax.set_title('局部放大图')
mark_inset(ax, inset_ax, loc1=3, loc2=4, fc="none", ec='k', lw=1)
最后
以上就是柔弱小蜜蜂为你收集整理的python画图局部放大图代码的全部内容,希望文章能够帮你解决python画图局部放大图代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复