Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用matplotlib在对数刻度上绘制坐标为零的点的连接线?_Python_Matplotlib_Logarithm - Fatal编程技术网

Python 使用matplotlib在对数刻度上绘制坐标为零的点的连接线?

Python 使用matplotlib在对数刻度上绘制坐标为零的点的连接线?,python,matplotlib,logarithm,Python,Matplotlib,Logarithm,是否可以在matplotlib中以对数比例绘制y值为零的点的连接线 我有一些数据,我想用对数标度在y轴上绘制。某些数据的y值为零。我意识到matplotlib不可能以对数比例绘制这些点,但我真的希望它能够绘制从上一点到下一点的连接线(如果其中一点为非零) 一种解决方案是简单地用一个极小的数字替换所有的零。我宁愿不这样做 matplotlib绘制的内容: 我想画的是: 我希望通过在y轴上使用“”选项而不是“log”,来解决这个问题。然后有一个linthreshyarg,用于指定 “曲线图的线性范

是否可以在matplotlib中以对数比例绘制y值为零的点的连接线

我有一些数据,我想用对数标度在y轴上绘制。某些数据的y值为零。我意识到matplotlib不可能以对数比例绘制这些点,但我真的希望它能够绘制从上一点到下一点的连接线(如果其中一点为非零)

一种解决方案是简单地用一个极小的数字替换所有的零。我宁愿不这样做

matplotlib绘制的内容:

我想画的是:

我希望通过在y轴上使用“”选项而不是“
log
”,来解决这个问题。然后有一个
linthreshy
arg,用于指定

“曲线图的线性范围(以避免出现曲线图 以零为中心的无穷大


事实上,正是这类问题的选择似乎旨在处理。在对数比例图的底部有一个奇怪的线性区域可能看起来有点傻,但你可以把它弄得很小。

通过从当前图形中拉出坐标,你总是可以在图的底部增加一个点:

import numpy as np
import pylab as plt

# Create some sample data like yours
X = np.linspace(0,3,100)
Y = np.exp(-X)

def semilogy_to_bottom(X,Y):
    # Plot once to move axes and remove plot
    P, = plt.semilogy(X,Y)
    plt.gca().lines.remove(P)

    # Find the bottom of the graph
    y_min = plt.gca().get_ylim()[0]

    # Add a new point
    X2 = np.concatenate((X,[X[-1]]))
    Y2 = np.concatenate((Y,[y_min]))
    plt.semilogy(X2,Y2)

semilogy_to_bottom(X,Y)
plt.xlim(0,5)
plt.show()

完美!如果我只使用symlog选项,效果很好,但是由于某种原因,如果我尝试为linthresy指定一个参数,我会得到一个
TypeError:unary的操作数类型错误-:“tuple”