2017-06-15 282 views
1

我在data_train['fk_action_code_id']中有33960 - 0和144-1。在Pandas直方圖中修改y軸matplotlib

在繪製直方圖時,1的橫條太小而不可見。有什麼辦法可以通過修改Y軸來提高1的柱線,使1的柱線可見?

我試過,但它不工作

b=[0,145, 35000] 
plt.yticks(b) 
plt.hist(data_train['fk_action_code_id'], histtype='bar', rwidth=0.8) 

enter image description here

回答

1

幾點建議:你可以

1)建立兩個Y軸,一個是零和其他對於那些

2.)用一個數字因子乘以一個數字因子,使它們具有相同的數量級(然後應該在圖例中解釋它)

3.)在plt.hist()命令中使用選項log=True繪製對數直方圖。

下將產生這三個選項圖:

MultipliedLogarithmictwin axes

import numpy as np 
import matplotlib.pyplot as plt 
zeros = np.zeros([35000]) 
modifier = 100 
ones = np.ones([145*modifier]) 
arr = np.hstack((zeros, ones)) 
bins = np.asarray([-0.5, 0.5, 1.5]) 
plt.hist(arr, bins=bins, facecolor='green', alpha=0.75, log=False) 
plt.xticks([0,1]) 
plt.title('Multiplied with a factor') 
plt.savefig('multiplied.png') 
plt.show() 
plt.clf() 
modifier = 1 
ones = np.ones([145*modifier]) 
arr = np.hstack((zeros, ones)) 
plt.hist(arr, bins=bins, facecolor='green', alpha=0.75, log=True) 
plt.xticks([0,1]) 
plt.title('Logarithmic') 
plt.savefig('log.png') 
plt.show() 
plt.clf() 

ax1 = plt.gca() 
ax2 = ax1.twinx() 
ax1.set_yticks([0, 35000, 40000]) 
ax1.set_ylim(0, 40000) 
ax2.set_yticks([0, 145, 200]) 
ax2.set_ylim(0, 200) 
ax1.hist(arr, bins=[bins[0], bins[1]], facecolor='green', alpha=0.75, log=False)#, histtype='bar')#, rwidth=1.0) 
ax2.hist(arr, bins=[bins[1], bins[2]], facecolor='green', alpha=0.75, log=False)#, histtype='bar')#, rwidth=1.0) 
plt.xticks([0,1]) 
plt.title('Two y axes') 
plt.savefig('two_axes.png') 
plt.show() 
plt.clf()