在Pandas matplotlib中修改直方图中的y轴

时间:2017-06-15 06:05:03

标签: python matplotlib machine-learning scikit-learn

我在data_train['fk_action_code_id']中有33960 - 0和144 - 1。

在绘制直方图时,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 个答案:

答案 0 :(得分:2)

一些建议:你可以

1。)创建两个y轴,一个用于零,另一个用于

2。)将一个条形乘以一个数字因子,使它们具有相同的数量级(你应该在图例中解释这个)

3.)在log=True命令中使用选项plt.hist()绘制对数直方图。

以下将为这三个选项生成图表:

Multiplied Logarithmic twin 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()