1

我已经使用下面的 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()

在此处输入图像描述

但是当我将它导入 plotly 时,直方图条被线条替换。我认为 plotly 与这个版本的 matplotlib 不兼容。

这是上面显示的相同直方图的绘图版本:

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

我正在使用 matplotlib 1.4.2

4

2 回答 2

3

您要绘制的代码直方图正在工作。

你只是错过了最后一步。您的情节显示的是分组条形图。基本上 plotly 所做的是在单列中显示 2 个条形图。

你需要做的是去

跟踪 > 模式并更改为“叠加”条形图

这是我的实现

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

于 2014-11-26T03:18:06.693 回答
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
于 2014-11-27T05:09:39.827 回答