我需要创建一个堆积柱形图,其中日期在 X 轴上聚合,并且条形图具有多个(动态形成的?)类别系列。
所有示例都演示了如何为每个类别创建具有单独列的堆叠图。是否可以实现该目标,而无需创建另一个将类别内联到数十列的表?我真的很想避免这种情况。
我将不胜感激的帮助
charts pivot google-sheets google-query-language stacked-bar-chart
于是我在网上找到了如下代码:
import matplotlib.pyplot as plt
import matplotlib
matplotlib.style.use('ggplot')
plotdata = pd.DataFrame({
"2018_m":[40, 12, 10, 26, 36],
"2019_m":[19, 8, 30, 21, 38],
"2020_m":[10, 10, 42, 17, 37]
}, index=["Dad", "Mam", "Bro", "Sis", "Me"]
)
plotdata2 = pd.DataFrame({
"2018_y":[20, 22, 10, 34, 12],
"2019_y":[12, 19, 27, 35, 14],
"2020_y":[21, 31, 52, 20, 34]
}, index=["Dad", "Mam", "Bro", "Sis", "Me"]
)
stacked_data = plotdata.apply(lambda x: x*100/sum(x), axis=1)
stacked_data2 = plotdata2.apply(lambda x: x*100/sum(x), axis=1)
stacked_data.plot(kind="bar", stacked=True)
stacked_data2.plot(kind="bar", stacked=True)
Run Code Online (Sandbox Code Playgroud)
这是输出:
我想知道将它们组合起来的最佳方式是什么,以便爸爸、妈妈、兄弟等每个人都有两个堆叠的条形?我在 Stack Overflow 上在线和其他地方遇到了一堆其他分组的堆叠条形码,但它们要求您迭代地定义每个条形的值,而理想情况下我只想引用数据框名称“plotdata” ' …
python matplotlib pandas stacked-bar-chart grouped-bar-chart
我一直在尝试用其值来注释堆积条形图的每个子金额,如上图所示(值不准确,只是一个示例)。
df.iloc[1:].T.plot(kind='bar', stacked=True)
plt.show()
Run Code Online (Sandbox Code Playgroud)
链接的帖子与我的问题有些相似,但我不理解该答案中给出的代码,也没有给出任何解释。
我正在尝试创建一个分组的堆叠条形图。
目前我有以下数据框:
>>> df
Value
Rating 1 2 3
Context Parameter
Total 1 43.312347 9.507902 1.580367
2 42.862649 9.482205 1.310549
3 43.710651 9.430811 1.400488
4 43.209559 9.803418 1.349094
5 42.541436 10.008994 1.220609
6 42.978286 9.430811 1.336246
7 42.734164 10.317358 1.606064
User 1 47.652348 11.138861 2.297702
2 47.102897 10.589411 1.848152
3 46.853147 10.139860 1.848152
4 47.252747 11.138861 1.748252
5 45.954046 10.239760 1.448551
6 46.353646 10.439560 1.498501
7 47.102897 11.338661 1.998002
Run Code Online (Sandbox Code Playgroud)
我希望将每个参数的“总计”和“用户”栏分组在一起。
这是生成的图表df.plot(kind='bar', stacked=True):
这些条形本身看起来是正确的,但是如何让每个Parameter的 …
python matplotlib seaborn stacked-bar-chart grouped-bar-chart
# Loading data
data(CPS85, package = "mosaicData")
# Count the number of females and males in each sector
plotdata <- group_by(CPS85,sector) %>%
count(sex)
# Print the data
print(plotdata)
# Construct a ggplot object according requirement above and assign it to 'plt'
plt <- ggplot(plotdata,
aes(x = sector,
y = n))+
geom_col(aes(fill=sex))+
geom_text(aes(label=n),
position = position_stack(vjust = 0.5))+
labs(x = "",
y = "Number of persons",
title = "")
# Display the stacked bar chart
plt
Run Code Online (Sandbox Code Playgroud)
我怎样才能改变我的 vjust 使数字位于堆积条的中间