2013-06-09 2 views
2

Я пытаюсь построить между шкалой Log, но есть проблемы;Python графический масштаб шкалы набор xticks?

from pylab import * 
import matplotlib.pyplot as pyplot 

Ds = pow(10,5) 
D = np.linspace(0, pow(10,6), 6) 
alpha=1.44 
beta=0.44 
A=alpha*pow((D/Ds), beta) 
L=1.65 
a=exp(-(A*L/4.343)) 
fig = pyplot.figure() 
ax = fig.add_subplot(1,1,1) 
ax.set_xscale('log') 
xlim(0.001,1) 
ylim(0.1,1) 
ax.grid() 
line, = ax.plot(D/(Ds),a, color='blue', lw=2, marker='o') 
show() 

но не могу установить значение метки оси х и клещей для it.I хотят ось у, чтобы показать в диапазоне от 0 до 1 с шагом 0,1; ось x для отображения от 0 до 10 в logscale, например 0,001 0,002 0,003 0,004 0,005 .... 0,01 0,02 0,03 ... и так далее, но я не могу этого сделать?

set_xscale автоматизирует тики и знаки ценности. Любая идея?

+0

возможный дубликат [установить тики с логарифмической шкалой] (http://stackoverflow.com/questions/14530113/set-ticks-with-logarithmic-scale) – tacaswell

ответ

2

Да, вы можете сделать это нравится:

import numpy as np 
xticks = [0.001, 0.002, 0.003, 0.004, 0.005, 0.01, 0.02, 0.03, 0.04, 0.05, 
      0.1, 0.2, 0.3, 0.4, 0.5, 1., 2., 3., 4., 5., 10.] 
yticks = np.arange(0,1,0.1) 
ax.xaxis.set_ticks(xticks) 
ax.yaxis.set_ticks(yticks) 

Чтобы заставить метки во всех заданных позициях вы можете ты set_ticklabels() метод, в котором вы можете также контролировать формат строки:

ax.xaxis.set_ticklabels(['%1.e' % i for i in xticks]) 
ax.yaxis.set_ticklabels(['%1.1f' % i for i in yticks]) 
+0

ax.xaxis.set_ticks ([0.001, 0.002 ...]) ^ СинтаксисError: недействительный синтаксис – y33t

+0

ok, я обновил ответ, это был всего лишь пример ... –

+0

да, но он показывает только 2 метки значений только по оси x, а не по другим? – y33t

Смежные вопросы