正在关注 the plotly directions ,我想绘制类似于以下代码的内容:
import plotly.plotly as py
import plotly.figure_factory as ff
import numpy as np
# Add histogram data
x1 = np.random.randn(200) - 2
x2 = np.random.randn(200)
x3 = np.random.randn(200) + 2
x4 = np.random.randn(200) + 4
# Group data together
hist_data = [x1, x2, x3, x4]
group_labels = ['Group 1', 'Group 2', 'Group 3', 'Group 4']
# Create distplot with custom bin_size
fig = ff.create_distplot(hist_data, group_labels, bin_size = [.1, .25, .5, 1])
# Plot!
py.iplot(fig, filename = 'Distplot with Multiple Bin Sizes')
但是,我有一个样本量不均匀的真实世界数据集(即第 1 组的计数与第 2 组的计数不同,等等)。此外,它采用名称-值对格式。
这里有一些虚拟数据来说明:
# Add histogram data
x1 = pd.DataFrame(np.random.randn(100))
x1['name'] = 'x1'
x2 = pd.DataFrame(np.random.randn(200) + 1)
x2['name'] = 'x2'
x3 = pd.DataFrame(np.random.randn(300) - 1)
x3['name'] = 'x3'
df = pd.concat([x1, x2, x3])
df = df.reset_index(drop = True)
df.columns = ['value', 'names']
df
如您所见,每个名称 (x1、x2、x3) 都有不同的计数,而且“名称”列也是我想用作颜色的。
有谁知道我该如何巧妙地绘制它?
仅供引用,在 R 中,它非常简单,我只需调用 ggplot,然后在 aes(fill = names)
中调用。
如有任何帮助,我们将不胜感激,谢谢!
最佳答案
您可以尝试对您的数据框进行切片,然后将其放入 Plotly 中。
fig = ff.create_distplot([df[df.names == a].value for a in df.names.unique()], df.names.unique(), bin_size=[.1, .25, .5, 1])
import plotly
import pandas as pd
plotly.offline.init_notebook_mode()
x1 = pd.DataFrame(np.random.randn(100))
x1['name']='x1'
x2 = pd.DataFrame(np.random.randn(200)+1)
x2['name']='x2'
x3 = pd.DataFrame(np.random.randn(300)-1)
x3['name']='x3'
df=pd.concat([x1,x2,x3])
df=df.reset_index(drop=True)
df.columns = ['value','names']
fig = ff.create_distplot([df[df.names == a].value for a in df.names.unique()], df.names.unique(), bin_size=[.1, .25, .5, 1])
plotly.offline.iplot(fig, filename='Distplot with Multiple Bin Sizes')
关于python - 绘制长度不均匀的分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46062117/