2016-11-17 9 views
0

Я пытаюсь построить некоторые данные в виде гистограммы в matplotlib, используя значения высокой точности в качестве x-axis тиков. Данные в диапазоне от 0 до 0,4, но большинство значений очень близки, как:Построение высокоточных данных в виде осевых тиков или их преобразование в разные значения?

0.05678, 0.05879, 0.125678, 0.129067

я использовал для того, чтобы значения np.around() (и это сделало их он должен от 0 до 0,4) меньше, но для всех данных это не сработало. Вот пример того, что работал несколько справа ->

и один, который не сделал ->enter image description here

вы можете видеть, что есть точки после 0.4, который просто не подходит. Вот код, который я использовал в Jupyter Notebook:

plt.hist(x=[advb_ratios,adj_ratios,verb_ratios],color = ['r','y','b'], bins =10, label = ['adverbs','adjectives', 'verbs']) 
plt.xticks(np.around(ranks,1)) 
plt.xlabel('Argument Rank') 
plt.ylabel('Frequency') 
plt.legend() 
plt.show() 

Это то же самое для обоих гистограмм только разные x что я черчения, все x значения, которые используются между 0 and 1.

Так что мои вопросы:

  1. Есть ли способ исправить это и отражает мои данные, как это?
  2. Лучше ли давать мои rank значения разных меток, которые отделяют их больше друг от друга, например, 1,2,3,4, или я потеряю точность своих данных и некоторую полезную информацию?
  3. Каков общий подход в таких ситуациях? Будет ли другая графическая помощь? Какие?
+0

Будет ли масштабирование данных только для построения его варианта? Вместо этого используйте 56.78 и 58.79. –

ответ

0

Я не понимаю вашу проблему, факт, что данные находятся между 0 и 0.4, не должен влиять на способ отображения. Я не понимаю, зачем вам нужно что-то делать, кроме звонка plt.hist().

Кроме того, вы можете передать массив в bins аргумента указать, какие бункеров вы хотите, чтобы вы могли сделать что-то подобное, чтобы заставить размер ваших закромах, чтобы быть всегда такой же

# Fake data 
x1 = np.random.normal(loc=0, scale=0.1, size=(1000,)) 
x2 = np.random.normal(loc=0.2, scale=0.1, size=(1000,)) 
x3 = np.random.normal(loc=0.4, scale=0.1, size=(1000,)) 

plt.hist([x1,x2,x3], bins=np.linspace(0,0.4,10)) 

enter image description here

+0

Проблема в том, что все значения действительно близки друг к другу, и если я не делаю np.around(), ось x отображается как черная линия, а на втором графике Я показал, что вы можете видеть, как есть бункеры после 0.4, ваш ответ частично очищает вещи. Но что, если я хочу использовать массив рангов как xticks, как я могу все еще заставить его так? Я имею в виду, допустим, я не знаю, как меняется диапазон? – nitheism