python: nuage de points sur l'échelle logarithmique

Dans mon code, je prends le logarithme des deux séries de données et les imprimer. Je voudrais changer chaque valeur de tique de l'axe x en l'élevant à la puissance de e (anti-logarithme du logarithme naturel).

En d'autres termes. Je veux représenter graphiquement les logarithmes des deux séries mais j'ai l'axe des abscisses dans les niveaux.

enter image description here

Voici le code que j'utilise.

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()
26
demandé sur natsuki_1996 2013-09-13 00:21:10

1 réponses

let matplotlib prendre le journal pour vous:

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')

si vous utilisez tous les mêmes marqueurs de taille et de couleur, il est plus rapide à utiliser 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')
57
répondu tacaswell 2013-09-12 21:37:13