将matplotlib中的直方图导入到plotly中

时间:2014-11-26 02:46:33

标签: python matplotlib plot histogram plotly

我用下面的python代码生成了这些直方图,它在maptlotlib中看起来很好:

d_norm_1 = np.random.normal(loc=0.0, scale=3.0, size=5000)

## Build a Gaussian Mixture Model:
array1 = np.random.normal(loc=4.0, scale=2.0, size=2000)
array2 = np.random.normal(loc=-5.0, scale=4.0, size=2000)
d_norm_2 = np.concatenate((array1, array2))

fig3 = plt.figure(3, figsize=(8, 6))
ax3 = fig3.add_subplot(1, 1, 1)

plt.hist(d_norm_1, bins=40, normed=True, color='b', alpha=0.4, rwidth=1.0)
plt.hist(d_norm_2, bins=40, normed=True, color='g', alpha=0.4, rwidth=0.8)

plt.xlabel('$x$', size=20)
plt.ylabel('Probability Density', size=20)
plt.title('Histogram', size=20)

plt.setp(ax3.get_xticklabels(), rotation='horizontal', fontsize=16)
plt.setp(ax3.get_yticklabels(), rotation='horizontal', fontsize=16)

plt.show()

enter image description here

但是当我将其导入到情节中时,直方图条被线代替。我认为plotly与这个版本的matplotlib不兼容。

以下是上面显示的相同直方图的图表版本:

https://plot.ly/~vmirjalily/11/histogram/

我正在使用matplotlib 1.4.2

2 个答案:

答案 0 :(得分:3)

您的代码直方图正在运行。

你只是错过了最后一步。你的情节显示的是一个分组的条形图。实际情况是,在一列中显示2个条形。

您需要做的是转到

痕迹>模式并更改为“叠加”条形图

这是我的实施

https://plot.ly/1/~quekxc

答案 1 :(得分:0)

如果你想使用网络工具,biobirdman的解决方案是完全没问题的。以下是严格使用Python的另一种方法:

import matplotlib.pyplot as plt
import numpy as np

import plotly.plotly as py

d_norm_1 = np.random.normal(loc=0.0, scale=3.0, size=5000)

## Build a Gaussian Mixture Model:
array1 = np.random.normal(loc=4.0, scale=2.0, size=2000)
array2 = np.random.normal(loc=-5.0, scale=4.0, size=2000)
d_norm_2 = np.concatenate((array1, array2))

fig3 = plt.figure(3, figsize=(8, 6))
ax3 = fig3.add_subplot(1, 1, 1)

plt.hist(d_norm_1, bins=40, normed=True, color='b', alpha=0.4, rwidth=1.0)
plt.hist(d_norm_2, bins=40, normed=True, color='g', alpha=0.4, rwidth=0.8)

plt.xlabel('$x$', size=20)
plt.ylabel('Probability Density', size=20)
plt.title('Histogram', size=20)

plt.setp(ax3.get_xticklabels(), rotation='horizontal', fontsize=16)
plt.setp(ax3.get_yticklabels(), rotation='horizontal', fontsize=16)

# note the `update` argument, it's formatted as a plotly Figure object
# this says: "convert the figure as best you can, then apply the update on the result"
py.iplot_mpl(fig3, update={'layout': {'barmode': 'overlay'}})

有关更多在线信息,请结帐https://plot.ly/matplotlib/https://plot.ly/python/

对于python帮助,请结帐help(py.iplot_mpl)help(Figure)

有时候确切地看到转换后的内容也很有用,你可以试试这个:

import plotly.tools as tls
pfig = tls.mpl_to_plotly(fig3)  # turns the mpl object into a plotly Figure object
print pfig.to_string()  # prints out a `pretty` looking text representation