2017-07-27 359 views
0

我目前正在嘗試使用下面的代碼在我的對數圖中放置水平虛線。 K2H_HUBp [:,1]DivR中二個[1x6000]數組。變量個人是一個[1x6000]數組。使用Python的matplotlib繪製對數圖上的虛線

這個圖的一點是顯示「土豆」的半徑與「紅薯」相比如何。因此,如果他們是相同的,所有的數據點應該落在這條y = 1線上。

plt.scatter(K2H_HUBp[:,1],DivR,s=2.5,alpha=0.15,c = '#A9A9A9') 
plt.loglog(K2H_HUBp[:,1], ones, '--',dashes=(1, 1),linewidth=0.9,c='#3C323C') 
plt.ylim((0.1,10)) 
plt.xlim((0.35,12)) 
ax = plt.gca() 
ax.tick_params(which = 'both', direction = 'in',right='on',top='on') 
ax.set_xscale('log') 
ax.set_yscale('log') 
plt.ylabel("Radius (Potatos/Sweet Potatos)") 
plt.xlabel("Radius (Potatos)") 

我想要那些線通過圖中可以同樣破滅。我有問題得到這個線路不等距分隔的graph here

我正在尋找的圖形非常相似this一個(是的,這是一個線性圖,我用對數圖表工作)

我已經試過修改破折號()參數沒有運氣。

在此先感謝您的指導。 :)

+1

你是什麼意思的「不平等的時尚」?代碼中的'abcdp'和'zero'是什麼? (注意:如果'zero == 0',那麼你不能將它繪製在對數圖中)。還要注意,該論文圖1中的底部圖不是對數日誌(左邊是線性線性,右邊是對數線性)。在一個簡單的測試中,我能夠在對數對數圖上繪製一條水平的虛線,沒有任何問題。如果您可以添加一個清晰顯示問題的[MCVE],這將有所幫助。 – tom

+0

由於參數「破折號=(1,20)」,破折號應該以1至20的恆定比例出現。要獲得1比1的比率,請使用'dashes =(1,1)'或者只是將該參數留出。如果這不是你想要的,我會建議你清楚地說明你得到了什麼,你期望什麼,以及你得到多少遠遠不是你所期望的。(使用至少3句話,並最好使用圖片來解釋) – ImportanceOfBeingErnest

+0

嘿湯姆和ImportanceOfBeingErnest, 我確實試圖把這些情節放到這裏,但是在昨天的問題中加載圖片時出現問題。我會盡量重新加載它們。 不幸的是,這並沒有解決我的問題,我現在將重新闡述它:) 感謝您的指示,如何改善溝通我的問題,這是一個很大的幫助! –

回答

0

您可以將其與其他loglog -plot或標準plot作圖。這段代碼是否會給你以後的內容?

import numpy as np 
import matplotlib.pyplot as plt 

fig, (ax1, ax2) = plt.subplots(2, 1) 

x = np.linspace(0.01, 10, 100) 
y = x**5 

ax1.loglog(x, y, '.') 
ax1.plot([x[0], x[-1]], [y[0], y[-1]], '--', label='with plot') 
ax1.legend() 

ax2.loglog(x, y, '.') 
ax2.loglog([x[0], x[-1]], [y[0], y[-1]], '--', label='with loglog') 
ax2.legend() 

fig.show() 
# plt.show() 

enter image description here

+0

嘿pathoren, 不幸的是,這不是爲我工作。仍然得到相同的線條。 –

+0

你正在使用哪個matplotlib版本?我使用MPL 2.0,我認爲他們在2.0中用線和破折號做了很多更新。 – pathoren

0

因此,原來Pyplot有一個名爲hlines一個漂亮的函數。此功能只使用以下參數繪製一條水平線:

matplotlib.pyplot.hlines(y, xmin, xmax, colors='k', linestyles='solid', label='', hold=None, data=None, **kwargs) 

在我來說,我現在已經完全刪除代碼:

plt.loglog(K2H_HUBp[:,1], ones, '--',dashes=(1, 1),linewidth=0.9,c='#3C323C') 

,並用它代替:

plt.hlines(1, 0.001, 20, linestyles='dashed',linewidth=0.9,colors='#3C323C') 

繪製從x 0.001到x 20的ay = 1行。然後這給我想要的結果是this graph

感謝您的指導,我希望這有助於未來的其他人!