Python 在对数刻度上绘制负值

Python 在对数刻度上绘制负值,python,matplotlib,seaborn,Python,Matplotlib,Seaborn,我正在做一些分析来计算log_10(x)的值,这是一个负数。我现在试图画出这些值,但是,因为答案的范围非常大,我想用对数标度来表示。如果我简单地使用plt.yscale('log')我会收到一条消息,告诉我UserWarning:数据没有正值,因此无法进行日志缩放。我也无法将x的值提供给plt.plot,因为log\u 10(x)的结果是如此之大且为负,以至于x**(log\u 10(x))的答案是如此之大只是0 绘制这些数据最直接的方法是什么?您可以使用 plt.yscale('symlog'

我正在做一些分析来计算
log_10(x)
的值,这是一个负数。我现在试图画出这些值,但是,因为答案的范围非常大,我想用对数标度来表示。如果我简单地使用
plt.yscale('log')
我会收到一条消息,告诉我
UserWarning:数据没有正值,因此无法进行日志缩放。
我也无法将
x
的值提供给
plt.plot
,因为
log\u 10(x)
的结果是如此之大且为负,以至于
x**(log\u 10(x))的答案是如此之大
只是
0

绘制这些数据最直接的方法是什么?

您可以使用

plt.yscale('symlog')

将比例设置为对称对数比例。这意味着它将以对数方式缩放到0的两侧。仅使用symlog刻度的负部分就可以了。

这里有一个函数,可以将范围拆分为symlog刻度的存储箱:。