2015-04-20 4 views
1

Я хочу построить некоторые Y данных в диапазоне 20000 до 50000.Matplotlib как построить полулогарифмический график с yticks и горизонтальными линиями сеток разнесен логарифмический

Я хочу ось у, чтобы перейти от 10000 до 60000 с шагом 5000.
Я хочу, чтобы ось y была графиком журнала.

Я пробовал ax1.set_yscale('log'). Это дало лог-график, но не горизонтальные линии сетки и никаких тиков га.

Как получить линии сетки в обоих направлениях и y тики, идущие вверх 10000, 15000 и т. Д., С интервалом в журнале?

Я пытаюсь получить шкалу YAxis как этот

enter image description here

Я использую следующий код в Python 2.5.2:

fig = pl.figure() 
rcParams['figure.figsize'] = 14, 10 # set graph size 
ax1 = fig.add_subplot(1, 1, 1) 
ax1.plot(do,line,'r-', do,ind,'g-') 
ax1.grid(True) 
pl.xticks(do,rotation=45) 
ax1.set_xlim([date1, date2]) 
ax1.set_yscale('log') 
pl.show() 

я мог рассчитывать log(line) и log(ind) и сделайте линейный график, но график не будет таким информативным!

+0

Изображение не отображается, когда я нажимаю на ссылку. Можете ли вы просто поставить его здесь прямо, а не ссылку? –

+0

Ознакомьтесь с примерами в [галерее] (http://matplotlib.org/examples/pylab_examples/log_demo.html) – cphlewis

+0

hmmm ........... да ссылка не доступна! Мне пришлось скопировать и вставить его - извините – derrick

ответ

0

Возможно, вам понадобится включить второстепенную сетку. Но также следует помнить, что диапазон от 10 до 60 достаточно мал для логарифмического (поэтому основная сетка не отображается)

import pylab as pl 
fig = pl.figure() 
# rcParams['figure.figsize'] = 14, 10 # set graph size 
ax1 = fig.add_subplot(1, 1, 1) 
#ax1.plot(line,'r-', ind,'g-') 
ax1.grid(True) 
# pl.xticks(do,rotation=45) 
ax1.set_xlim([10, 20]) 
ax1.set_yscale('log') 
ax1.set_ylim([10000, 60000]) 
ax1.grid(which='minor') 
pl.show() 
+0

В свете ваших комментариев это может быть то, что вы ищете: http://stackoverflow.com/a/17209836/4735642 – Beachcomber

0

Спасибо всем за интерес. После прочтения ваших предложений и ссылки Beachcombers и некоторых экспериментов я придумал следующее решение.

import pylab as pl 
fig = pl.figure() 
rcParams['figure.figsize'] = 14, 10 # set graph size 
ax1 = fig.add_subplot(1, 1, 1) 
ax1.plot(do,line,'r-', do, ind,'g-') 
ax1.grid(True) 
pl.xticks(do,rotation=45) 
ax1.set_xlim([date1, date2]) 
ax1.set_yscale('log') 
ax1.grid(which='minor') 
from matplotlib.ticker import FormatStrFormatter 
ax1.yaxis.set_minor_formatter(FormatStrFormatter("%.0f")) 
pl.show() 

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

  • Нет связанных вопросов^_^