2017-07-27 31 views
0

現在、以下のコードを使用してログロググラフに水平の破線を配置しようとしています。 K2H_HUBp [:1]DivRは、二つ[1x6000]アレイです。変数のものは、1つでいっぱいの[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行が等間隔に並んでいない場所。

I)は、((はい、これは線形グラフであると私は両対数グラフで働いている)

が、私はダッシュを変更しようとしたthis 1と非常によく似ているように、グラフを探しています運がないパラメータ

ご指導いただきありがとうございます。 :)

+1

「不平等なファッション」とはどういう意味ですか?あなたのコードで 'abcdp'と' zero'とは何ですか? (注: '0 == 0 'の場合、ログログプロットでプロットすることはできません)。また、その論文の図1の下のグラフはログログではないことに注意してください(左は線形リニア、右はログリニアです)。簡単なテストでは、問題なくログ・ログ・プロットに水平の破線をプロットすることができました。参考になる問題をはっきりと示す[MCVE]を追加することができれば。 – tom

+0

ダッシュは、引数 'dashes =(1,20)'のために、実際には1から20の一定の比率で出てきます。 1対1の比率を得るには、 'dashes =(1,1)'を使うか、その引数をそのままにしておきます。それがあなたが探しているものでないなら、私はあなたが得るもの、期待するもの、そしてあなたが得るものがどれだけ遠くまであなたが望むものなのかを明確に述べることを提案します。(少なくとも3つの文章を使って説明してください) – ImportanceOfBeingErnest

+0

Hey tomと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

Hey 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からx20までay = 1行をプロットすると、私の望む結果はthis graphになります。

あなたのガイダンスをお寄せいただきありがとうございます。今後これが他の誰かに役立つことを願っております。

関連する問題