Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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 如何更改x轴在对数刻度中从较大值开始到最小值?_Python_Python 3.x_Matplotlib_Axis - Fatal编程技术网

Python 如何更改x轴在对数刻度中从较大值开始到最小值?

Python 如何更改x轴在对数刻度中从较大值开始到最小值?,python,python-3.x,matplotlib,axis,Python,Python 3.x,Matplotlib,Axis,我有一个图,其中x和y值的起点应该是100。x轴需要对数缩放 我不能反转我的x刻度从100开始到0 我的代码: ax = df.plot(y ='ais_percent', x = 'rtcm_percent', color = 'firebrick') ax.set_xscale("log") ax.set_yscale("linear") ax.invert_yaxis() ax.invert_xaxis() ax.set_xlim(1e2,0) 这就是我所获得的情节: y刻度正确,但

我有一个图,其中x和y值的起点应该是100。x轴需要对数缩放

我不能反转我的x刻度从100开始到0

我的代码:

ax = df.plot(y ='ais_percent', x = 'rtcm_percent', color = 'firebrick')
ax.set_xscale("log")
ax.set_yscale("linear")

ax.invert_yaxis()
ax.invert_xaxis()
ax.set_xlim(1e2,0)
这就是我所获得的情节:

y刻度正确,但x轴应相反

如何执行此操作?

未定义日志(0)。改变

ax.set\u xlim(1e2,0)
例如,设置为
ax.set\u xlim(1e2,1e-300)

参考反转x轴,仅设置xlim即可反转。因此,
ax.invert_xaxis()
不是必需的

请参见以下代码段的示例:

import pandas as pd
import matplotlib.pyplot as plt

squareroots = [(i, i**0.5) for i in range(0, 100)]
squareroot_df = pd.DataFrame(squareroots, columns=['i', 'i^0.5'])

ax = squareroot_df.plot(x='i', y='i^0.5', color='firebrick')

ax.set_xscale('log')
# ax.invert_xaxis()  # not necessary
ax.set_xlim(1e2, 1e-50)

plt.show()
未定义日志(0)。改变

ax.set\u xlim(1e2,0)
例如,设置为
ax.set\u xlim(1e2,1e-300)

参考反转x轴,仅设置xlim即可反转。因此,
ax.invert_xaxis()
不是必需的

请参见以下代码段的示例:

import pandas as pd
import matplotlib.pyplot as plt

squareroots = [(i, i**0.5) for i in range(0, 100)]
squareroot_df = pd.DataFrame(squareroots, columns=['i', 'i^0.5'])

ax = squareroot_df.plot(x='i', y='i^0.5', color='firebrick')

ax.set_xscale('log')
# ax.invert_xaxis()  # not necessary
ax.set_xlim(1e2, 1e-50)

plt.show()
设置限制(使用方法
set\u xlim()
)重置
反转xaxis()
。因此,您必须更改命令的顺序:

而不是

ax.invert_xaxis()
ax.set_xlim(1e2,0)
使用

设置限制(使用方法
set\u xlim()
)重置
反转xaxis()
。因此,您必须更改命令的顺序:

而不是

ax.invert_xaxis()
ax.set_xlim(1e2,0)
使用


可能的重复可能的重复不这不是问题所在。这是因为日志(0)不存在。同样要反转轴
ax。set_xlim(max_值,min_值)
就足够了。@Bruno,不存在log(0)没有问题-请参阅问题中的代码和相应的图表。你试过我的答案了吗?是的,我试过了,而且我肯定不能用ax.set_xlim(1e2,0)反转轴,但是它可以用ax.set_xlim(1e2,1e-300)反转。。。你的建议是将轴从低值反转回高值。@布鲁诺,我的答案总是经过正确性测试的。可能您使用了旧版本的matplotlib(我使用的是版本2.2.2),或者您混淆了警告消息“试图为对数刻度轴设置非正xlimits;”有一个错误-尽管如此,matplotib设置了限制,然后反转x轴。@bruno,是的,你可能是对的。顺便说一句,OP似乎对我们的答案不感兴趣不,这不是问题所在。这是因为日志(0)不存在。同样要反转轴
ax。set_xlim(max_值,min_值)
就足够了。@Bruno,不存在log(0)没有问题-请参阅问题中的代码和相应的图表。你试过我的答案了吗?是的,我试过了,而且我肯定不能用ax.set_xlim(1e2,0)反转轴,但是它可以用ax.set_xlim(1e2,1e-300)反转。。。你的建议是将轴从低值反转回高值。@布鲁诺,我的答案总是经过正确性测试的。可能您使用了旧版本的matplotlib(我使用的是版本2.2.2),或者您混淆了警告消息“试图为对数刻度轴设置非正xlimits;”有一个错误-尽管如此,matplotib设置了限制,然后反转x轴。@bruno,是的,你可能是对的。顺便说一句,OP似乎对我们的答案不感兴趣