python:散点图对数刻度

问题描述 投票:34回答:2

在我的代码中,我取两个数据系列的对数并将其绘制。我想通过将x轴的每个刻度值提高到e(自然对数的对数)的幂来更改它。

换句话说。我想绘制两个系列的对数,但水平具有x轴。

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS83OTRGQy5wbmcifQ==” alt =“在此处输入图像描述”>

这是我正在使用的代码。

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()
python matplotlib logarithm
2个回答
70
投票

matplotlib为您获取日志:

fig = plt.figure()
ax = plt.gca()
ax.scatter(data['o_value'] ,data['time_diff_day'] , c='blue', alpha=0.05, edgecolors='none')
ax.set_yscale('log')
ax.set_xscale('log')

如果使用所有相同的大小和颜色标记,则使用plot的速度更快>>

fig = plt.figure()
ax = plt.gca()
ax.plot(data['o_value'] ,data['time_diff_day'], 'o', c='blue', alpha=0.05, markeredgecolor='none')
ax.set_yscale('log')
ax.set_xscale('log')

0
投票

接受的答案有点过时了。至少pandas 0.25本机支持对数轴:

© www.soinside.com 2019 - 2024. All rights reserved.