2016-06-23 3 views
0

У меня есть, по-видимому, простой вопрос. Может быть, это просто я неправильно использую библиотеку, но я не могу понять, какой правильный синтаксис для нее.Log x-scale in matplotlib box plot

Я должен сделать коробку из набора данных. Я хочу поместить ось x в логарифмическую шкалу, но просто запись plt.xscale('log') приводит к исчезновению x-масштаба.

Вот мой код:

import matplotlib.pyplot as plt 

# .. data analysis here ... 

plt.boxplot(values, positions = pos, widths = w) 
plt.xscale('log') 
plt.yscale('log') 
plt.show() 

И полученное изображение:

enter image description here

Что нормально, за исключением того, что ось х не появляются. Есть ли простое решение этой проблемы?

Спасибо! Любые советы высоко ценится!

ответ

0

Попытка использовать plt.autoscale() или установить пределы для оси х вручную:

import matplotlib.pyplot as plt 
import numpy as np 

# fake up some data 
spread = np.random.rand(50) * 100 
center = np.ones(25) * 50 
flier_high = np.random.rand(10) * 100 + 100 
flier_low = np.random.rand(10) * -100 
data = np.concatenate((spread, center, flier_high, flier_low), 0) 
spread = np.random.rand(50) * 100 
center = np.ones(25) * 40 
flier_high = np.random.rand(10) * 100 + 100 
flier_low = np.random.rand(10) * -100 
d2 = np.concatenate((spread, center, flier_high, flier_low), 0) 
data.shape = (-1, 1) 
d2.shape = (-1, 1) 
data = [data, d2, d2[::2, 0]] 

plt.figure() 
plt.boxplot(data) 
plt.xscale('log') 
plt.yscale('log') 
plt.autoscale(True) 
plt.show() 

enter image description here