2016-08-23 5 views
0

私は以下を持っていますgraphMatplotlibグラフはx軸を伸ばします

import matplotlib.pyplot as plt 
import numpy as np 
fig = plt.figure() 


x_values = [2**6,2**7,2**8,2**9,2**10,2**12] 
y_values_ST = [7.3,15,29,58,117,468]  
y_values_S3 = [2.3,4.6,9.1,19,39,156]  
xticks=['2^6','2^7','2^8','2^9','2^10','2^12'] 

plt.plot(x_values, y_values_ST,'-gv') 
plt.plot(x_values, y_values_S3,'-r+') 
plt.legend(['ST','S^3'], loc='upper left') 
plt.xticks(x_values,xticks) 

fig.suptitle('Encrypted Query Size Overhead') 
plt.xlabel('Query size') 
plt.ylabel('Size in KB') 
plt.grid() 
fig.savefig('token_size_plot.pdf') 
plt.show() 

1)2^12の後に表示されるように、最後のギャップを削除するにはどうすればよいですか? 2)どのように最初の2つの値が重複しないように、x軸の値をさらに広げることができますか?

答えて

1

1)2^12の後に表示されるように最後のギャップを削除するにはどうすればよいですか? iは最初の2つの値が重複しないことをx軸の値は、そのようなより広がることができるどのように明示的限界、例えばを設定

.:

plt.xlim(2**5.8, 2**12.2) 

2)?

ログプロットが必要なようです。 (ベース2は、あなたのケースに該当すると思われる)pyplot.semilog()使用するか、x軸に対数スケールを設定します。

plt.xscale('log', basex=2) 

注意をこのケースでは、あなたも2^*を手動ティック設定する必要はありませんことを、彼らがします自動的にこのように作成されます。 autoscaleを1.Using

enter image description here

0

は、軸を指定するか、または交互に、あなたは、両方の軸のためplt.axis('tight')を使用することができます。 2.ログスケールされたX軸を使用します。以下のコード:

import matplotlib.pyplot as plt 

fig = plt.figure() 

x_values = [2**6,2**7,2**8,2**9,2**10,2**12] 
y_values_ST = [7.3,15,29,58,117,468] 
y_values_S3 = [2.3,4.6,9.1,19,39,156] 
xticks=['2^6','2^7','2^8','2^9','2^10','2^12'] 

ax = plt.gca() 
ax.set_xscale('log') 
plt.plot(x_values, y_values_ST,'-gv') 
plt.plot(x_values, y_values_S3,'-r+') 
plt.legend(['ST','S^3'], loc='upper left') 
plt.xticks(x_values,xticks) 

fig.suptitle('Encrypted Query Size Overhead') 
plt.xlabel('Query size') 
plt.ylabel('Size in KB') 

plt.autoscale(enable=True, axis='x', tight=True)#plt.axis('tight') 
plt.grid() 
fig.savefig('token_size_plot.pdf') 
plt.show()