在我的代码中,我采用两个数据系列的对数并绘制它们.我想通过将其提高到e的幂(自然对数的反对数)来改变x轴的每个刻度值.
换一种说法.我想绘制两个系列的对数图,但是在水平上有x轴.

这是我正在使用的代码.
from pylab import scatter
import pylab
import matplotlib.pyplot as plt
import pandas as pd
from pandas import Series, DataFrame
import numpy as np
file_name = '/Users/joedanger/Desktop/Python/scatter_python.csv'
data = DataFrame(pd.read_csv(file_name))
y = np.log(data['o_value'], dtype='float64')
x = np.log(data['time_diff_day'], dtype='float64')
fig = plt.figure()
plt.scatter(x, y, c='blue', alpha=0.05, edgecolors='none')
fig.suptitle('test title', fontsize=20)
plt.xlabel('time_diff_day', fontsize=18)
plt.ylabel('o_value', fontsize=16)
plt.xticks([-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4])
plt.grid(True)
pylab.show()
Run Code Online (Sandbox Code Playgroud) 在以下生成对数图的代码中,python 选择了一个不显示散点图上的点的 x 范围
import matplotlib.pyplot as plt
plt.scatter([.005,.005],[1,2])
plt.xscale('log')
plt.yscale('log')
plt.show()
Run Code Online (Sandbox Code Playgroud)
此外,如果您改为使用以下代码,它可以正常工作:
import matplotlib.pyplot as plt
plt.plot([.005,.005],[1,2])
plt.xscale('log')
plt.yscale('log')
plt.show()
Run Code Online (Sandbox Code Playgroud)
通常 python 会为 x 和 y 值选择一个合适的范围。为什么在这种情况下不呢?
请注意,我知道可以更改 x 和 y 范围,以便不使用默认值。我的问题是专门问为什么在这种情况下 python 没有选择一个好的范围。
谢谢
我似乎这是为什么 matplotlib 需要在 plt.scatter() 之前设置对数刻度而不是 plt.plot() 的副本?
对于阅读本文的任何人,请告诉我是否应该删除此问题,或者您是否会推荐其他内容。谢谢