type price1 price2
0 A 5450.0 31980.0
1 B 5450.0 20000.0
2 C 15998.0 18100.0
我想要的是一个聚类条形图,它将“类型”与“价格”进行对比.最终目标是一个图表,每种类型有两个条形,一个条形为“price1”,另一个条形条形为“price2”.两列都在同一个单元($)中.使用bokeh我可以按类型分组,但我似乎无法通过一个通用的“价格”单元进行分组.到目前为止我有这个代码:
import pandas as pd
import numpy as np
from bokeh.charts import Bar, output_file, show
from bokeh.palettes import Category20 as palette
from bokeh.models import HoverTool, PanTool
p = Bar(
df,
plot_width=1300,
plot_height=900,
label='type',
values='price2',
bar_width=0.4,
legend='top_right',
agg='median',
tools=[HoverTool(), PanTool()],
palette=palette[20])
解决方法:
你的桌子是“宽”格式.您希望首先使用pd.melt()函数将其融合为长格式.对于可视化,我建议您使用“Seaborn”包,让您的生活更轻松.你可以在一行中想象每件事.
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
your_df = pd.DataFrame(data={'type': ['A','B','C'],
'price1':[5450, 5450, 15998],
'price2' : [3216, 20000, 15000]})
long_df = pd.melt(your_df,id_vars = ['type'],value_vars =['price1','price2'])
print long_df
my_plot = sns.barplot(x="type", y="value",hue = "variable", data=long_df)
sns.plt.show()
可以在这里找到关于长格式和宽格式的好帖子:
Reshape Long Format Multivalue Dataframes with Pandas
如果你坚持使用散景这就是你如何做到这一点,因为renzop指出:
p = Bar(long_df,
plot_width=1000,
plot_height=800,
label='type',
values='value',
bar_width=0.4,
group='variable',
legend='top_right')
show(p)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。