天道酬勤,学无止境

绘制一个既堆叠又聚集的条形图(Plot a bar graph which is both stacked and clustered)

问题

如何使用 gnuplot 绘制这样的图形。

在此处输入图像描述

回答1

gnuplot 的演示页面显示了一个类似的示例。 (这是该页面上的最后一个示例,并生成下面的图)

图片来自 gnuplot 演示页面

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 有没有办法使用 barplot 或 ggplot 在同一个图形上有一个条形图和一个堆叠的条形图?(Is there a way to have a barplot and a stacked barplot on the same graph using barplot or ggplot?)
    问题 我有两条数据要叠加到同一个图上。 我看过几篇 ggplot 文章,我认为在 ggplot 中是不可能的。 所以我一直在使用barplot。 我有 5 层,我正在按层绘制总美元作为一个实心条。 然后我有另一条数据,它代表两种不同类型的工人在这些层中的任务数量。 我将此作为堆叠条形图。 但我想将它们显示在同一个图表上,总美元金额作为一个条形,然后是旁边相应的堆叠条形。 以下是情节: 第一个图表的数据如下所示(它是一个表格): 1 2 3 4 5 0 9 340 97 812 4271 1 1 417 156 3163 11314 第二个图的数据如下所示(这是一个数据集): Tier variable value 1 1 Opp_Amt 16200.00 2 2 Opp_Amt 116067.50 3 3 Opp_Amt 35284.12 4 4 Opp_Amt 278107.10 5 5 Opp_Amt 694820.29 我想将图形放在彼此的顶部,但条形一直重叠,我希望它们并排出现。 到目前为止我所拥有的代码。 par(mar=c(2.5, 4, 4, 4)+2) ## Plot first set of data and draw its axis barplot(data1$value, axes=FALSE,ylim=c(0,700000), xlab="", ylab=
  • 如何使用python(Pandas)形成堆叠的条形图簇(How to have clusters of stacked bars with python (Pandas))
    问题 所以这是我的数据集的样子: In [1]: df1=pd.DataFrame(np.random.rand(4,2),index=["A","B","C","D"],columns=["I","J"]) In [2]: df2=pd.DataFrame(np.random.rand(4,2),index=["A","B","C","D"],columns=["I","J"]) In [3]: df1 Out[3]: I J A 0.675616 0.177597 B 0.675693 0.598682 C 0.631376 0.598966 D 0.229858 0.378817 In [4]: df2 Out[4]: I J A 0.939620 0.984616 B 0.314818 0.456252 C 0.630907 0.656341 D 0.020994 0.538303 我想为每个数据框都具有堆积条形图,但是由于它们具有相同的索引,因此我希望每个索引有2个堆积条形图。 我试图在相同的轴上绘制两个: In [5]: ax = df1.plot(kind="bar", stacked=True) In [5]: ax2 = df2.plot(kind="bar", stacked=True, ax = ax) 但是它重叠了。 然后我尝试首先合并两个数据集: pd
  • matplotlib绘制各种图形
    知识点归纳 1. 线图:plot() 2. 散点图:scatter() 3. 条形图:bar() 4. 箱型图:barplot() 5. 饼图:pie() 6. 直方图和密度图:hist() 7. 多图合并显示:subplot()和subplots() 8. 图表动态刷新:ion()和ioff() 线图:plot() 函数功能:展现变量的变化趋势 调用方法:plt.plot(x, y, linestyle, linewidth,color,marker, markersize, markeredgecolor, markerfactcolor, label, alpha) x:指定折线图的x轴数据; y:指定折线图的y轴数据; linestyle:指定折线的类型,可以是实线、虚线、点虚线、点点线等,默认文实线; linewidth:指定折线的宽度 marker:可以为折线图添加点,该参数是设置点的形状; markersize:设置点的大小; markeredgecolor:设置点的边框色; markerfactcolor:设置点的填充色; label:为折线图添加标签,类似于图例的作用; import numpy as np import matplotlib.pyplot as plt import matplotlib.mlab as mlab import
  • R:有两组的条形图,其中一组堆叠(R: bar plot with two groups, of which one is stacked)
    问题 在R中创建条形图时遇到了一个小问题。有3个变量: a <- c(3,3,2,1,0) b <- c(3,2,2,2,2) c <- 0:4 条形图应按“ a”和“ c”分组,“ b”应堆叠在“ a”的顶部。 单独进行分组和堆叠很简单: barplot(rbind(a,c), beside=TRUE) barplot(rbind(a,b), beside=FALSE) 如何在一张图表中同时完成两项操作? 回答1 这样做需要了解如何思考barplot绘制堆叠条形。 基本上,您需要在适当的地方为它提供一些值为0的数据。 使用您的数据: mydat <- cbind(rbind(a,b,0),rbind(0,0,c))[,c(1,6,2,7,3,8,4,9,5,10)] barplot(mydat,space=c(.75,.25)) 要了解引擎盖下发生了什么,请看一下mydat : > mydat [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] a 3 0 3 0 2 0 1 0 0 0 b 3 0 2 0 2 0 2 0 2 0 0 0 0 1 0 2 0 3 0 4 在这里,您将使用三个值( a的值, b的值, c的值)绘制每个条形图。 mydat矩阵的每一列都是一个条形图,对其进行排序,以使ab条形图与c条形图适当地散布。
  • 在同一图中绘制多个堆叠条形图(Plot multiple stacked bar in the same figure)
    问题 我想在同一个图中多个堆叠条。 这是我的代码: file_to_plot = file_to_plot.set_index(['user']) fig, ax = plt.subplots() fontP = FontProperties() fontP.set_size('small') file_to_plot[[" mean_accuracy_all_classes_normal", " delta_all_classes"]].plot(ax=ax, kind='bar', color= ['g', 'r'], width = 0.65, align="center", stacked=True) file_to_plot[[" mean_accuracy_user_classes_normal", " delta_user_classes"]].plot(ax=ax, kind='bar', color=['y', 'b'], width=0.65, align="center", stacked = True) lgd = ax.legend(['Tutte le classi (normale)', 'Tutte le classi (incrementale)', 'Classi utente (normale)', 'Classi utente
  • 带有熊猫的多个堆叠条形图(Multiple stacked bar plot with pandas)
    问题 我试图用熊猫制作一个多堆叠条形图,但我遇到了问题。 这是一个示例代码: import pandas as pd df = pd.DataFrame({'a':[10, 20], 'b': [15, 25], 'c': [35, 40], 'd':[45, 50]}, index=['john', 'bob']) ax = df[['a', 'c']].plot.bar(width=0.1, stacked=True) ax=df[['b', 'd']].plot.bar(width=0.1, stacked=True, ax=ax) df[['a', 'd']].plot.bar(width=0.1, stacked=True, ax=ax) 这产生以下情节: 如您所见,每个集群内的条形图都绘制在彼此的顶部,这不是我想要实现的。 我希望同一个集群中的条形图彼此相邻绘制。 我试图玩弄“位置”的论点,但没有取得太大的成功。 关于如何实现这一目标的任何想法? 回答1 您可以通过移动bar-plot的position参数来实现,使它们彼此相邻,如图所示: matplotlib.style.use('ggplot') fig, ax = plt.subplots() df[['a', 'c']].plot.bar(stacked=True, width=0.1, position=1
  • ggplot2 中一个图上的条形图和堆叠条形图(Bar and stacked bars on one plot in ggplot2)
    问题 晚上好,有人可以帮忙绘图吗? 我有一些这样的数据: DF <- data.frame( country_dest=c("Russia", "Germany", "Ukraine" ,"Kazakhstan", "United States", "Italy", "Israel", "Belarus"), SumTotal=c(7076562,2509617,1032325,680137,540630,359030,229186,217623) ) 用单独的 8 个条形绘制它并不是什么大问题,但我想知道是否可以用 3 个条形绘制一个图形,其中第一个条形将与俄罗斯的数据(例如)第二个将是堆叠的条形德国、乌克兰、哈萨克斯坦、美国和意大利也许有一些传说可以了解谁是白俄罗斯和以色列的第三大棒。 在互联网上,我找到了一个用 0 值创建新 DF 的解决方案,但不太明白。 比你提前! 回答1 那么,您需要将分组信息添加到您的数据中。 然后就变得简单了。 这是一种策略 #define groups grp <-c("Russia"=1, "Germany"=2, "Ukraine"=2,"Kazakhstan"=2, "United States"=2, "Italy"=2, "Israel"=3, "Belarus"=3) DF$grp<-grp[as.character(DF
  • matplotlib 中的堆栈条形图并为每个部分添加标签(stack bar plot in matplotlib and add label to each section)
    问题 我正在尝试在 matplotlib 中复制以下图像,看来barh是我唯一的选择。 虽然看起来你不能堆叠barh图所以我不知道该怎么做 如果你知道一个更好的 python 库来绘制这种东西,请告诉我。 这是我能想出的所有开始: import matplotlib.pyplot as plt; plt.rcdefaults() import numpy as np import matplotlib.pyplot as plt people = ('A','B','C','D','E','F','G','H') y_pos = np.arange(len(people)) bottomdata = 3 + 10 * np.random.rand(len(people)) topdata = 3 + 10 * np.random.rand(len(people)) fig = plt.figure(figsize=(10,8)) ax = fig.add_subplot(111) ax.barh(y_pos, bottomdata,color='r',align='center') ax.barh(y_pos, topdata,color='g',align='center') ax.set_yticks(y_pos) ax.set_yticklabels(people) ax
  • matplotlib中的堆栈条形图并将标签添加到每个部分(stack bar plot in matplotlib and add label to each section)
    问题 我正在尝试在matplotlib中复制以下图像,看来barh是我唯一的选择。 虽然看来您无法堆叠barh图,但我不知道该怎么办 如果您知道有更好的Python库可以绘制此类内容,请告诉我。 这就是我一开始可以想到的一切: import matplotlib.pyplot as plt; plt.rcdefaults() import numpy as np import matplotlib.pyplot as plt people = ('A','B','C','D','E','F','G','H') y_pos = np.arange(len(people)) bottomdata = 3 + 10 * np.random.rand(len(people)) topdata = 3 + 10 * np.random.rand(len(people)) fig = plt.figure(figsize=(10,8)) ax = fig.add_subplot(111) ax.barh(y_pos, bottomdata,color='r',align='center') ax.barh(y_pos, topdata,color='g',align='center') ax.set_yticks(y_pos) ax.set_yticklabels(people) ax.set
  • 具有多个 csv 文件的聚类和堆积条形图(Clustered and stacked bar plot with multiple csv files)
    问题 我有多个具有相同数据结构的 csv 文件 url, A,B,C,D a.com,1,2,3,4 b.com,3,4,5,6 我可以创建一个堆叠条形图,其中 url 在 x 轴上,A、B、C、D 堆叠在彼此的顶部。 现在我想创建聚集的堆积条形图,其中包含多个这样的 csv 文件,所有这些文件都由 x 轴上的相同 url 索引。 data1 = read.csv("data.csv") data2 = read.csv("data2.csv") data.m = melt(data1, id.var="url") ggplot(data.m, aes(x = url, y = value, fill = variable)) + geom_bar(position="fill",stat = "identity") 基本上将 data2 添加到绘图中。 不确定我是否应该使用聚集或刻面或在融化后手动创建新列? 它应该是这样的: 回答1 这是你追求的吗? # Two sample datasets df1 <- cbind.data.frame( url = c("a.com", "b.com"), A = c(1, 3), B = c(2, 4), C = c(3, 5), D = c(4, 6)); df2 <- cbind.data.frame( url = c("a.com"
  • ggplot2-带有堆栈和闪避的条形图(ggplot2 - bar plot with both stack and dodge)
    问题 我正在尝试使用ggplot2创建一个barplot,在其中我按一个变量进行堆叠,而对另一个变量进行回避。 这是一个示例数据集: df=data.frame( year=rep(c("2010","2011"),each=4), treatment=rep(c("Impact","Control")), type=rep(c("Phylum1","Phylum2"),each=2), total=sample(1:100,8)) 我想创建一个条形图,其中x=treatment , y=total ,堆叠变量是type ,而躲避变量是year 。 我当然可以做一个或另一个: ggplot(df,aes(y=total,x=treatment,fill=type))+geom_bar(position="dodge",stat="identity") ggplot(df,aes(y=total,x=treatment,fill=year))+geom_bar(position="dodge",stat="identity") 但不是两者! 感谢任何可以提供建议的人。 回答1 这是使用构面而不是躲避的另一种方法: ggplot(df, aes(x = year, y = total, fill = type)) + geom_bar(position = "stack", stat
  • 熊猫-绘制堆积的条形图(Pandas - Plotting a stacked Bar Chart)
    问题 我正在尝试创建一个堆叠的条形图来复制图片,我所有的数据都与该Excel电子表格分开。 我无法弄清楚如何为其制作一个数据框,如图所示,也无法弄清楚如何制作堆叠的条形图。 我找到的所有示例都以与尝试创建的方式不同的方式进行工作。 我的数据框是使用pandas数据框缩小到以下所有值的csv。 Site Name Abuse/NFF 0 NORTH ACTON ABUSE 1 WASHINGTON - 2 WASHINGTON NFF 3 BELFAST - 4 CROYDON - 我已经设法对总计的数据进行了计数,并获得了每个站点的单独计数,但我似乎无法将其以图形方式进行组合。 真的很感谢一些强有力的指导。 代码完整,非常感谢您的协助。 test5 = faultdf.groupby(['Site Name', 'Abuse/NFF'])['Site Name'].count().unstack('Abuse/NFF').fillna(0) test5.plot(kind='bar', stacked=True) 回答1 您遇到错误,还是不确定从哪里开始? %pylab inline import pandas as pd import matplotlib.pyplot as plt df2 = df.groupby(['Name', 'Abuse/NFF'])['Name']
  • 如何在 ggplot2 中绘制(复杂的)堆叠条形图,无需复杂的手动数据聚合(How to plot a (sophisticated) stacked barplot in ggplot2, without complicated manual data aggregation)
    问题 我想绘制一个(分面)堆叠条形图,其中 X 轴以百分比表示。 此外,频率标签显示在条形图中。 经过相当多的工作并在stackoverflow上查看了许多不同的问题后,我找到了一个关于如何使用ggplot2解决这个问题的解决方案。 但是,我不直接使用 ggplot2 进行此操作,而是使用表调用手动聚合我的数据。 我以复杂的方式进行手动聚合,并使用临时变量手动计算百分比值(请参阅源代码注释“手动聚合数据”)。 如何在没有手动和复杂数据聚合的情况下以更好的方式绘制相同的图? library(ggplot2) library(scales) library(gridExtra) library(plyr) ## ## Random Data ## fact1 <- factor(floor(runif(1000, 1,6)), labels = c("A","B", "C", "D", "E")) fact2 <- factor(floor(runif(1000, 1,6)), labels = c("g1","g2", "g3", "g4", "g5")) ## ## STACKED BAR PLOT that scales x-axis to 100% ## ## manually aggregate data ## mytable <- as.data.frame(table
  • 在 matplotlib 中创建堆积柱状图(Creating a stacked cylinder bar plot in matplotlib)
    问题 matplotlib 可以绘制如下图所示的堆积圆柱条形图吗? 如果它只有一个酒吧呢? 如果没有,另一种选择就是通常的堆叠条形图,条形边缘为圆角——这可能吗? 我搜索了 matplotlib 库和bar()文档,但找不到可以做的事情。 回答1 我不知道绘制堆叠圆柱条形图的直接函数,我认为也没有简单的解决方法。 问题是它既不是真正的 2D 也不是 3D。 使用 Matplotlib,您必须使 2D 看起来像 3D。 这意味着您必须制作圆柱形状。 为了让它看起来不错,你可能还需要一个纹理来提供阴影的外观。 mplot3d 是 Matplotlib 的 3D 扩展,我用它来制作下面的图。 我觉得它看起来有点太3D了。 顶部看起来有点扭曲,整个情节成一个角度...... mplot3d 使用起来也有点痛苦。 使气缸看起来漂亮需要相当多的努力。 代码不是很完善,但我确实对其进行了注释。 from __future__ import print_function from __future__ import division from __future__ import absolute_import from mpl_toolkits.mplot3d import Axes3D import numpy import matplotlib import matplotlib.pyplot
  • r 堆叠条形图,颜色代表值(r stacked bargraph with colors representing values)
    问题 我希望制作一个堆叠条形图,用颜色表示来自单独数据列的值,并仅使用 R 中的基本图形添加准确的颜色条。 还有一篇关于这个的帖子,但它非常混乱,最后并没有帮助我回答我的问题。 # create reproducible data d <- read.csv(text='Day,Location,Length,Amount 1,4,3,1.1 1,3,1,.32 1,2,3,2.3 1,1,3,1.1 2,0,0,0 3,3,3,1.8 3,2,1,3.54 3,1,3,1.1',header=T) # colors will be based on values in the Amount column v1 <- d$Amount # make some colors based on Amount - normalized z <- v1/max(v1)*1000 colrs <- colorRampPalette(c('lightblue','blue','black'))(1000)[z] # create a 2d table of the data needed for plotting tab <- xtabs(Length ~ Location + Day, d) # create a stacked bar plot barplot(tab,col=colrs
  • jqplot 并排堆积条形图(jqplot Side by Side Stacked Bar Chart)
    问题 是否可以使用 jqplot 实现并排堆积条形图? 例如,X 轴将是给定的月份,并且每个月都有一定数量的堆叠条。 像这样的东西: 注意:我要求的只是一个普通的堆积图不同的东西。 请查看图片以更好地了解我正在尝试做什么。 回答1 没有人为 jqplot 创建了这种功能。 这家伙说他要去。 使用不同的库,如 Flot,自己为 jqplot 编写一个插件,或者说服别人这样做! 如果您使用 Flot,看起来他们有一个补丁可以在此处启用此功能,但尚未合并。 回答2 你将不得不在同一个情节基础上绘制两个图形,如果你不想要任何工具提示或其他东西,这将是可以的,因为它只适用于一个情节试试这个 - $(document).ready(function(){ /* graph config */ var maxVal = 13; /* graph vals */ var Bar1 = [5, 0, 10, 0, 12, 0]; var Bar2 = [0, 17, 0, 20, 0, 12 ]; var BaseVals=[0,0,0,0,0,0]; /* graph ticks */ var baseTicks=['Americas','','Europe','','Asia',''] var EmptyTicks=['','','','','',''] /* plot the base
  • 堆积条形图ggplot上的单个误差线(Single error bar on stacked bar plot ggplot)
    问题 我一直在尝试绘制堆叠的条形图,但没有成功,但每个条形图的顶部都带有单个误差线,而不是条形图的每个部分。 我可以为每个部分绘制所有误差线,但没有找到绘制单个误差线的解决方案。 这是数据帧df Sp Type Or Rate se 1 H Dis Bottom 14.5454545 8.0403025 2 H Dis Top 2.7272727 1.9403407 3 H Dis WP 0.9090909 0.9090909 4 H He Bottom 5.4545455 1.4845392 5 H He Top 15.4545455 5.0797135 6 H He WP 0.0000000 0.0000000 7 H HeDis Bottom 9.0909091 3.8330638 8 H HeDis Top 8.1818182 4.1659779 9 H HeDis WP 3.6363636 2.0100756 10 N Dis Bottom 19.0909091 8.9329715 11 N Dis Top 0.0000000 0.0000000 12 N Dis WP 0.0000000 0.0000000 13 N He Bottom 22.7272727 7.0743137 14 N He Top 0.0000000 0.0000000 15 N He WP 3
  • 从数据帧在 Python/matplotlib 中的条形图顶部绘制线图(Plotting line plot on top of bar plot in Python / matplotlib from dataframe)
    问题 我正在尝试在 matplotlib 中的堆叠条形图上绘制线图,但无法同时显示它们。 我已经通过从其他数据帧和日期时间索引中提取各种信息来设置组合数据帧。 我正在尝试从活动列( LightlyActive, FairlyActive, VeryActive )和一组轴( ax1 )上每个睡眠周期( wake, light, deep, rem )中的分钟数绘制一个堆积条形图。 然后,我尝试将efficiency列绘制为一组单独的轴 ( ax2 ) 上的线图。 我无法同时显示堆积条形图和折线图。 如果我第二次绘制条形图,那是唯一显示的条形图。 如果我首先绘制线图(活动和效率),那么这些是唯一显示的。 似乎我第二次绘制的任何一种情节风格都会掩盖第一个情节。 LightlyActive FairlyActive VeryActive efficiency wake light deep rem dateTime 2018-04-10 314 34 123 93.0 55.0 225.0 72.0 99.0 2018-04-11 253 22 102 96.0 44.0 260.0 50.0 72.0 2018-04-12 282 26 85 93.0 47.0 230.0 60.0 97.0 2018-04-13 292 35 29 96.0 43.0 205.0 81.0 85.0
  • ggplot2 stats="identity" 和在条形图中堆叠颜色给出“条纹”条形图(ggplot2 stats=“identity” and stacking colors in bar plot gives “striped” bar chart)
    问题 在回答我之前的问题之后,我提出了另一个问题: 如何在不重塑数据的情况下根据另一个类别绘制具有不同颜色的堆积条形图,同时使用 stats="identity" 来总结每个堆积区域的值? 统计标识可以很好地总结值,但对于非堆叠列。 在堆积的列中,堆积以某种方式“相乘”或“条纹”,见下图。 一些数据样本: element <- rep("apples", 15) qty <- c(2, 1, 4, 3, 6, 2, 1, 4, 3, 6, 2, 1, 4, 3, 6) category1 <- c("Red", "Green", "Red", "Green", "Yellow") category2 <- c("small","big","big","small","small") d <- data.frame(element=element, qty=qty, category1=category1, category2=category2) 这给出了该表: id element qty category1 category2 1 apples 2 Red small 2 apples 1 Green big 3 apples 4 Red big 4 apples 3 Green small 5 apples 6 Yellow small 6 apples 2 Red
  • 使用基础 R 分组和堆叠的条形图(Grouped and stacked barplot using base R)
    问题 我想创建一个组合条形图,其中 data1 和 data2 之间堆叠,而 data1 和 data2 之间分组在基本 R 图形中。 像这样的安排: data1 <- matrix(c(1:5, rep(1,5), rep(4,5)), ncol=5) data2 <- matrix(c(2:6, rep(2,5), rep(3,5)), ncol=5) # stacked bar barplot(data1) #grouped var barplot(data1, beside=TRUE) 知道我该怎么做吗? 我知道我们可以使用不同的情节或方面来做到这一点,但我想在一个情节中并排呈现它们。 回答1 您可以使用barplot的参数space来移动第二个 barplot : # plot first barplot, using xlim to ensure there is enough space to plot the second one # (here the spaces are all 0, so the bars are grouped together) barplot(data1, space=0, xlim=c(-1, ncol(data1)+ncol(data2)+1), las=1) # plot second barplot (with add=TRUE