Python 绘制局部放大图

这篇具有很好参考价值的文章主要介绍了Python 绘制局部放大图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python 绘制局部放大图

转载自这篇文章:博客

请务必先看此文章: 【Python】Matplotlib局部放大图画法这篇文章已经非常详细,但是没有数据,所以自己生成了一些数据,以及对部分代码进行了函数封装,以便于二次使用。import matplotlib.pyplot as pltfrom matplotlib.patches importConnectionPatchimport numpy as npdef zone_and_linke

Eloik  · 2021-01-31 22:44:29
请务必先看此文章: 【Python】Matplotlib局部放大图画法

这篇文章已经非常详细,但是没有数据,所以自己生成了一些数据,以及对部分代码进行了函数封装,以便于二次使用。

import matplotlib.pyplot as plt
from matplotlib.patches import  ConnectionPatch
import numpy as np

def zone_and_linked(ax,axins,zone_left,zone_right,x,y,linked='bottom',
                    x_ratio=0.05,y_ratio=0.05):
    """缩放内嵌图形,并且进行连线
    ax:         调用plt.subplots返回的画布。例如: fig,ax = plt.subplots(1,1)
    axins:      内嵌图的画布。 例如 axins = ax.inset_axes((0.4,0.1,0.4,0.3))
    zone_left:  要放大区域的横坐标左端点
    zone_right: 要放大区域的横坐标右端点
    x:          X轴标签
    y:          列表,所有y值
    linked:     进行连线的位置,{'bottom','top','left','right'}
    x_ratio:    X轴缩放比例
    y_ratio:    Y轴缩放比例
    """
    xlim_left = x[zone_left]-(x[zone_right]-x[zone_left])*x_ratio
    xlim_right = x[zone_right]+(x[zone_right]-x[zone_left])*x_ratio

    y_data = np.hstack([yi[zone_left:zone_right] for yi in y])
    ylim_bottom = np.min(y_data)-(np.max(y_data)-np.min(y_data))*y_ratio
    ylim_top = np.max(y_data)+(np.max(y_data)-np.min(y_data))*y_ratio

    axins.set_xlim(xlim_left, xlim_right)
    axins.set_ylim(ylim_bottom, ylim_top)

    ax.plot([xlim_left,xlim_right,xlim_right,xlim_left,xlim_left],
            [ylim_bottom,ylim_bottom,ylim_top,ylim_top,ylim_bottom],"black")

    if linked == 'bottom':
        xyA_1, xyB_1 = (xlim_left,ylim_top), (xlim_left,ylim_bottom)
        xyA_2, xyB_2 = (xlim_right,ylim_top), (xlim_right,ylim_bottom)
    elif  linked == 'top':
        xyA_1, xyB_1 = (xlim_left,ylim_bottom), (xlim_left,ylim_top)
        xyA_2, xyB_2 = (xlim_right,ylim_bottom), (xlim_right,ylim_top)
    elif  linked == 'left':
        xyA_1, xyB_1 = (xlim_right,ylim_top), (xlim_left,ylim_top)
        xyA_2, xyB_2 = (xlim_right,ylim_bottom), (xlim_left,ylim_bottom)
    elif  linked == 'right':
        xyA_1, xyB_1 = (xlim_left,ylim_top), (xlim_right,ylim_top)
        xyA_2, xyB_2 = (xlim_left,ylim_bottom), (xlim_right,ylim_bottom)
        
    con = ConnectionPatch(xyA=xyA_1,xyB=xyB_1,coordsA="data",
                          coordsB="data",axesA=axins,axesB=ax)
    axins.add_artist(con)
    con = ConnectionPatch(xyA=xyA_2,xyB=xyB_2,coordsA="data",
                          coordsB="data",axesA=axins,axesB=ax)
    axins.add_artist(con)
  • 生成数据


# x坐标
x = np.arange(1,1001)

# 生成y轴数据,并添加随机波动
y1 = np.log(x)
indexs = np.random.randint(0,1000,800)
for index in indexs:
    y1[index] += np.random.rand() - 0.5

y2 = np.log(x)
indexs = np.random.randint(0,1000,800)
for index in indexs:
    y2[index] += np.random.rand() - 0.5
    
y3 = np.log(x)
indexs = np.random.randint(0,1000,800)
for index in indexs:
    y3[index] += np.random.rand() - 0.5
  • 可视化数据

# 绘制主图
fig, ax = plt.subplots(1,1,figsize=(12,7))
ax.plot(x,y1,color='#f0bc94',label='trick-1',alpha=0.7)
ax.plot(x,y2,color='#7fe2b3',label='trick-2',alpha=0.7)
ax.plot(x,y3,color='#cba0e6',label='trick-3',alpha=0.7)
ax.legend(loc='right')
# plt.show()

python局部放大图,Python应用,python,matplotlib,机器学习

  • 添加局部放大图
# 绘制缩放图
axins = ax.inset_axes((0.4, 0.1, 0.4, 0.3))

# 在缩放图中也绘制主图所有内容,然后根据限制横纵坐标来达成局部显示的目的
axins.plot(x,y1,color='#f0bc94',label='trick-1',alpha=0.7)
axins.plot(x,y2,color='#7fe2b3',label='trick-2',alpha=0.7)
axins.plot(x,y3,color='#cba0e6',label='trick-3',alpha=0.7)

# 局部显示并且进行连线
zone_and_linked(ax, axins, 100, 150, x , [y1,y2,y3], 'right')

plt.show()

python局部放大图,Python应用,python,matplotlib,机器学习

  • 使用不同参数进行不同区域的放大

# 绘制缩放图
axins = ax.inset_axes((0.4, 0.1, 0.4, 0.3))

# 在缩放图中也绘制主图所有内容,然后根据限制横纵坐标来达成局部显示的目的
axins.plot(x,y1,color='#f0bc94',label='trick-1',alpha=0.7)
axins.plot(x,y2,color='#7fe2b3',label='trick-2',alpha=0.7)
axins.plot(x,y3,color='#cba0e6',label='trick-3',alpha=0.7)

# 局部显示并且进行连线
zone_and_linked(ax, axins, 700, 760, x , [y1,y2,y3], 'bottom')
plt.show()

python局部放大图,Python应用,python,matplotlib,机器学习文章来源地址https://www.toymoban.com/news/detail-517479.html

另外,这两篇博客也值得参考,这里就不贴出来了。

  • python放大局部图像(画中画形式展示)
  • 5行Python代码系列:五行代码实现两个视频画中画播放

到了这里,关于Python 绘制局部放大图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 超详细的Python matplotlib 绘制柱状图

    Python 为数据展示提供了大量优秀的功能包,其中 matplotlib 模块可以方便绘制制作折线图、柱状图、散点图等高质量的数据包。 关于 matplotlib 模块,我们前期已经对matplotlib进行基本框架、以及常用方法的学习 Python matplotlib 绘制饼图_ python matplotlib绘制折线图_ python入门到进阶,

    2023年04月08日
    浏览(62)
  • python使用matplotlib实现折线图的绘制

    一、意义 数据可视化可以以简洁的方式呈现出数据,发现众多数据中隐藏的规律和意义。Matplotlib是一个数学绘图库。利用它可以制作简单的图表(散点图、折线图)。然后,将基于漫步概念生成一个更有趣的数据集–根据一系列随机决策生成的图表。本文我们主要练习折线

    2024年02月12日
    浏览(34)
  • Python中使用matplotlib绘制各类图表示例

    折线图 折线图是一种用于表示数据随时间、变量或其他连续性变化的趋势的图表。通过在横轴上放置时间或如此类似的连续变量,可以在纵轴上放置数据点的值,从而捕捉到数据随时间发生的变化。折线图可以用于比较不同变量的趋势,轻松地发现不同的变量之间的差异。

    2024年02月10日
    浏览(44)
  • Python使用Matplotlib绘制三维折线图(进阶篇)

    三维图像技术是现在国际最先进的计算机展示技术之一,任何普通电脑只需要安装一个插件,就可以在网络浏览器中呈现三维的产品,不但逼真,而且可以动态展示产品的组合过程,特别适合远程浏览。 立体图视觉上层次分明色彩鲜艳,具有很强的视觉冲击力,让观看的人驻

    2024年02月05日
    浏览(63)
  • Python中Matplotlib库的使用(三)—— Matplotlib绘制图的常用类型

    plot(x,y) plot(x, y) 函数用于绘制折线图。折线图是一种用来展示连续数据之间关系的图表类型,适用于表示数据随着一个或多个变量的变化而变化的情况。 具体来说, plot(x, y) 函数接受两个参数: x :表示X轴上的数据点的值,通常是一个数组或列表,表示自变量的取值。 y :

    2024年02月03日
    浏览(73)
  • 使用Matplotlib在Python中绘制三维散点图

    什么是Matplotlib? Matplotlib是Python中的一个库,用于创建静态和动态动画,并使用其内置函数绘制。它有很多内置特性和内置分析工具,用于分析任何图形或图表。 如果我们想绘制任何三维图形,那么我们可以使用Matplotlib库。当我们有一个巨大的三维变量数据集,我们绘制它

    2024年02月12日
    浏览(45)
  • Python学习笔记(11-2):matplotlib绘图——图形绘制函数

    因为部分图形绘制函数共用了一套参数体系,在颜色、曲线形状等部分的使用方式也是一致的。所以,在讲解各类图形绘制之前,我们整体性地对各类通用参数进行一个整理,并在此基础上对于颜色(color)、数据点标记(marker)和曲线形式(linestyle)等几个通用参数进行相

    2024年02月06日
    浏览(58)
  • 如何根据自有数据拟合绘制3D曲面图-Python matplotlib

    目录 问题提出 绘制简单曲面图 使用自有数据拟合绘制 在网上找了很久怎么用自己有的dataframe数据,拟合出3d的曲面图,大部分人都是根据已知函数去绘制,有几篇进行拟合绘制,但是还是根据特定函数生成的数据,没有一篇直接用dataframe数据画3d曲面图的。讲的比较好的几

    2024年02月09日
    浏览(48)
  • Python 实例|matplotlib|绘制直方图(各参数样例)

    matplotlib.pyplot.hist 的官方文档:https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.hist.html 这个方法使用 numpy.histogram 首先将 x 中的数据分桶并统计每个桶中的元素数量,接着使用条形图绘制这个分布。 函数参数、含义及样例如下: 参数列表及样例 x : 数据集对象(必填) (n,) arr

    2024年02月07日
    浏览(51)
  • 小提琴图的绘制方法:Python matplotlib实现

      本文介绍基于 Python 中 matplotlib 模块与 seaborn 模块,利用多个 列表 中的数据,绘制小提琴图( Violin Plot )的方法。   小提琴图作为一种将 箱型图 与 核密度图 分别所能表达的信息相结合的数据可视化图,在数据分析中得以广泛应用;本文就详细介绍在 Python 中,对存

    2024年02月08日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包