“log” 和 “symlog” 之间有什么区别?

2025-03-11 08:54:00
admin
原创
68
摘要:问题描述:在matplotlibpyplot.xscale()中,我可以使用或设置轴缩放比例Axes.set_xscale()。两个函数都接受三种不同的比例:'linear'| 'log'| 'symlog'。'log'和之间有什么区别'symlog'?在我做的一个简单测试中,它们看起来完全一样。我知道文档说...

问题描述:

在matplotlibpyplot.xscale()中,我可以使用或设置轴缩放比例Axes.set_xscale()。两个函数都接受三种不同的比例:'linear'| 'log'| 'symlog'

'log'和之间有什么区别'symlog'?在我做的一个简单测试中,它们看起来完全一样。

我知道文档说它们接受不同的参数,但我仍然不明白它们之间的区别。有人能解释一下吗?如果答案有一些示例代码和图形,将是最好的!(还有:'symlog' 这个名字从何而来?)


解决方案 1:

我终于抽出时间做了一些实验,以便了解它们之间的区别。以下是我发现的:

  • log只允许正值,并让您选择如何处理负值(maskclip)。

  • symlog表示对称对数,允许正值和负值。

  • symlog允许在图中设置零附近的范围,该范围将是线性的而不是对数的。

我认为通过图形和示例一切都会变得更容易理解,所以让我们尝试一下:

import numpy
from matplotlib import pyplot

# Enable interactive mode
pyplot.ion()

# Draw the grid lines
pyplot.grid(True)

# Numbers from -50 to 50, with 0.1 as step
xdomain = numpy.arange(-50,50, 0.1)

# Plots a simple linear function 'f(x) = x'
pyplot.plot(xdomain, xdomain)
# Plots 'sin(x)'
pyplot.plot(xdomain, numpy.sin(xdomain))

# 'linear' is the default mode, so this next line is redundant:
pyplot.xscale('linear')

使用“线性”缩放的图表

# How to treat negative values?
# 'mask' will treat negative values as invalid
# 'mask' is the default, so the next two lines are equivalent
pyplot.xscale('log')
pyplot.xscale('log', nonposx='mask')

使用“log”缩放和 nonposx='mask' 的图表

# 'clip' will map all negative values a very small positive one
pyplot.xscale('log', nonposx='clip')

使用“log”缩放和 nonposx='clip' 的图表

# 'symlog' scaling, however, handles negative values nicely
pyplot.xscale('symlog')

使用“symlog”缩放的图表

# And you can even set a linear range around zero
pyplot.xscale('symlog', linthreshx=20)

使用“symlog”缩放但在(-20,20)范围内呈线性的图表

为了完整起见,我使用了以下代码来保存每个图形:

# Default dpi is 80
pyplot.savefig('matplotlib_xscale_linear.png', dpi=50, bbox_inches='tight')

请记住,您可以使用以下方法更改图形大小:

fig = pyplot.gcf()
fig.set_size_inches([4., 3.])
# Default size: [8., 6.]

(如果您不确定我是否能回答我自己的问题,请阅读此内容)

解决方案 2:

symlog与 log 类似,但允许您定义接近零的值范围,在此范围内绘图是线性的,以避免绘图在零附近趋于无穷大。

来自http://matplotlib.sourceforge.net/api/axes_api.html#matplotlib.axes.Axes.set_xscale

在对数图中,永远不会有零值,如果值接近于零,它将从图表底部急剧下降(无限向下),因为当取“对数(接近于零)”时,会得到“接近于负无穷大”。

如果您想要一个对数图,但数值有时会下降到零,但您仍然希望能够以有意义的方式在图表上显示出来,那么 symlog 会帮到您。如果您需要 symlog,您就会知道。

解决方案 3:

以下是需要 symlog 时的行为示例:

初始图,未缩放。注意在 x~0 处聚集的点数

    ax = sns.scatterplot(x= 'Score', y ='Total Amount Deposited', data = df, hue = 'Predicted Category')

[ 非缩放
'

对数刻度图。一切都崩溃了。

    ax = sns.scatterplot(x= 'Score', y ='Total Amount Deposited', data = df, hue = 'Predicted Category')

    ax.set_xscale('log')
    ax.set_yscale('log')
    ax.set(xlabel='Score, log', ylabel='Total Amount Deposited, log')

对数尺度

为什么会崩溃?因为 x 轴上的一些值非常接近或等于 0。

Symlog 缩放图。一切如其所愿。

    ax = sns.scatterplot(x= 'Score', y ='Total Amount Deposited', data = df, hue = 'Predicted Category')

    ax.set_xscale('symlog')
    ax.set_yscale('symlog')
    ax.set(xlabel='Score, symlog', ylabel='Total Amount Deposited, symlog')

符号对数尺度

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2796  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1710  
  PLM系统在企业项目管理中扮演着至关重要的角色,尤其是在项目采购管理方面,能够通过一系列策略提升采购效率、降低成本并保障质量。通过深入解析相关策略,企业可以更好地利用PLM系统优化采购流程,实现项目的顺利推进与整体目标的达成。需求精准定义策略在项目采购中,明确需求是首要任务。PLM系统可助力企业精准定义采购需求。首先,...
plm是什么意思   8  
  在企业的运营过程中,跨部门数据共享一直是一个关键且颇具挑战的问题。不同部门之间由于业务差异、系统不兼容等多种因素,常常形成信息孤岛,导致数据无法顺畅流通,影响企业整体的决策效率和协同效果。而 PLM 系统作为一种先进的管理工具,为解决这一难题提供了有效的途径。通过其一系列强大的核心功能,能够打破部门之间的数据壁垒,实现...
plm系统   7  
  PLM(产品生命周期管理)项目涉及产品从概念设计到退役的全流程管理,其复杂性和长期性要求高效的项目进度管理工具。甘特图作为一种直观且实用的项目进度可视化工具,在PLM项目中发挥着关键作用。通过甘特图,项目团队成员能够清晰地了解项目任务的时间安排、进度状态以及各项任务之间的关系,从而更好地协调工作、分配资源,确保项目按计...
plm流程是什么   6  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用