Python 如何更改x轴在对数刻度中从较大值开始到最小值?
我有一个图,其中x和y值的起点应该是100。x轴需要对数缩放 我不能反转我的x刻度从100开始到0 我的代码: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刻度正确,但
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似乎对我们的答案不感兴趣