Не удается получить twiny () для правильного выравнивания оси X в гистограмме - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь добавить вторую метку оси X в верхнюю часть графика.Нормальная ось находится в логарифмическом масштабе и отображается как 10 ^ -1, 10 ^ 0 и т. Д., Как и должно быть, но мне также нужны тики на каждые 10 ^ x.5 вдоль вершины (.1, .32, 1, 3.2, так далее).Когда я пытаюсь сделать это с помощью twiny, они выровнены совершенно неправильно, и я даже не могу понять причину.Вот мой код (и полученный сюжет):

from pylab import *
import numpy as np

dfile = "data.txt"                       #DATA STUFF YOU DON'T NEED
data = np.loadtxt(dfile,dtype=float)
asep = data[:,1]
par= data[:,2]
dist = 1000/par
dsep = asep*dist
ldsep = np.log10(dsep)


#RELEVANT BITS

ax1=subplot(211)
ax1.set_xlim([0,100])
plt.gca().set_xscale("log")
plt.hist(allsep,bins=[.1,.32,1,3.2,10,32,100],facecolor='red')
plt.ylabel('$N_{stars}$')

ax2 = ax1.twiny()
ax2.set_xscale("log")
newpos=[.1,.32,1,3.2,10,32,100]
newlabel=[0.1,0.32,1.0,3.2,10,32,100]
ax2.set_xticks(newpos)
ax2.set_xticklabels(newlabel)
ax2.xaxis.set_ticks_position('top')
ax2.xaxis.set_label_position('top')
ax2.set_xlim(ax1.get_xlim())




#SECOND PLOT, NOT REALLY NECESSARY
ax3=subplot(212)
ax3.set_xlim([0,100])
plt.hist(allsep,bins=[0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80],facecolor='red')
plt.xlabel('Projected Separation (AU)')
plt.ylabel('$N_{stars}$')


plt.savefig('dhist.png',dpi=300)
plt.show()

plot

Спасибо всем!

1 Ответ

0 голосов
/ 12 октября 2018

Когда я пытаюсь запустить ваш код, первое сообщение об ошибке: UserWarning: Attempted to set non-positive xlimits for log-scale axis;...
Итак, какие версии python и matplotlib вы используете?Возможно, вам следует подумать об обновлении.

Но, тем не менее, до этого вы могли просто сначала проверить, что произойдет, если вы измените настройку пределов оси X на [0,1, ...]:

ax1.set_xlim([0.1,100])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...