当前位置:   article > 正文

Python可视化 --柱形图_python圆柱体柱形图

python圆柱体柱形图

本文绘制以上6种类型的柱状图

1.matplotlib模块

   使用pyplot的bar()函数可以快速绘制柱形图或堆积图柱形图。八日()函数的语法格式如下:

  1. bar(x,height,width=0.8,bottom=None,aqlign='center',
  2. data=None,tick_label=None,xerr=None,yerr=None,
  3. error_kw=None,**kwargs)

bar 函数是 Matplotlib 中用于绘制柱状图的函数,以下是参数的解释:

  • x: 一个数组,表示每个柱的 x 坐标。
  • height: 一个数组,表示每个柱的高度。
  • width: 可选参数,表示每个柱的宽度,默认为 0.8。
  • bottom: 可选参数,表示每个柱的底部位置,默认为 None,即从 0 开始。
  • align: 可选参数,表示柱的对齐方式,可选值为 'center'(默认)、'edge'。
  • data: 可选参数,是一个 DataFrame 或类似结构的数据,用于指定数据源。
  • tick_label: 可选参数,用于设置 x 轴刻度标签。
  • xerr: 可选参数,用于设置 x 方向的误差条(error bars)。
  • yerr: 可选参数,用于设置 y 方向的误差条(error bars)。
  • error_kw: 可选参数,用于设置误差条的样式。
  • **kwargs: 其他关键字参数,用于设置柱状图的样式属性,例如颜色、透明度等。

基础图

(1)

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. x = np.arange(5)
  4. y1 = np.array([10,8,7,11,13])
  5. bar_width = 0.3
  6. plt.bar(x,y1,tick_label=['a','b','c','d','e'],width=bar_width)
  7. plt.show()

(2)

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. import seaborn as sns
  4. x = np.arange(5)
  5. y1 = np.array([10, 8, 7, 11, 13])
  6. bar_width = 0.3
  7. plt.bar(x, y1, tick_label=['a', 'b', 'c', 'd', 'e'], width=bar_width)
  8. # 使用 Seaborn 库中的 despine() 函数去除轴线
  9. sns.despine()
  10. plt.show()

(3)

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. import seaborn as sns
  4. x = np.arange(5)
  5. y1 = np.array([10, 8, 7, 11, 13])
  6. bar_width = 0.3
  7. bars = plt.bar(x, y1, tick_label=['a', 'b', 'c', 'd', 'e'], width=bar_width)
  8. sns.despine(left=True, bottom=True) # 去除所有图脊
  9. plt.yticks([]) # 不显示纵坐标
  10. # 在每个柱形顶部显示数值
  11. for bar in bars:
  12. yval = bar.get_height()
  13. plt.text(bar.get_x() + bar.get_width() / 2, yval, round(yval, 1), ha='center', va='bottom')
  14. plt.show()

  1. import numpy as np: 导入 NumPy 库,用于处理数组等数值计算。

  2. import matplotlib.pyplot as plt: 导入 Matplotlib 的 pyplot 模块,用于绘制图形。

  3. import seaborn as sns: 导入 Seaborn 库,用于美化图形。

  4. x = np.arange(5): 创建一个包含 0 到 4 的数组作为 x 轴坐标。

  5. y1 = np.array([10, 8, 7, 11, 13]): 创建一个包含柱形高度数据的 NumPy 数组。

  6. bar_width = 0.3: 设置柱形的宽度为 0.3。

  7. bars = plt.bar(x, y1, tick_label=['a', 'b', 'c', 'd', 'e'], width=bar_width): 绘制柱状图,指定 x 轴、柱形高度数据、标签和宽度,并将返回的柱形对象存储在 bars 中。

  8. sns.despine(left=True, bottom=True): 使用 Seaborn 库中的 despine() 函数去除图形周围的轴线,通过设置 left=True, bottom=True 参数去除左侧和底部的轴线。

  9. plt.yticks([]): 不显示纵坐标刻度。

  10. 遍历每个柱形对象 bar,获取其高度并在顶部显示数值:

  • bar.get_x() + bar.get_width() / 2:计算文本标签的 x 坐标,使其居中于柱形。
  • bar.get_height():获取柱形的高度作为要显示的数值。
  • round(yval, 1):对数值进行四舍五入取一位小数。
  • plt.text(..., ha='center', va='bottom'):在指定位置添加文本标签,水平居中、垂直底部对齐,显示数值。
  1. plt.show(): 展示绘制的柱状图。

分组柱状图

(1)

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. x = np.arange(5)
  4. y1 = np.array([10,8,7,11,13])
  5. y2 = np.array([9,6,5,10,12])
  6. #柱形的宽度
  7. bar_width = 0.3
  8. #根据多组数据绘制柱形图
  9. plt.bar(x,y1,tick_label=['a','b','c','d','e'],width=bar_width)
  10. plt.bar(x+bar_width,y2,width=bar_width)
  11. plt.show()

(2)

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. x = np.arange(5)
  4. y1 = np.array([10,8,7,11,13])
  5. y2 = np.array([9,6,5,10,12])
  6. #柱形的宽度
  7. bar_width = 0.3
  8. #根据多组数据绘制柱形图
  9. plt.bar(x,y1,tick_label=['a','b','c','d','e'],color='dodgerblue',alpha=0.5,label='Male',width=bar_width)
  10. plt.bar(x+bar_width,y2,color='tomato',alpha=0.5,label='Female',width=bar_width)
  11. plt.legend() #显示图例
  12. plt.show()

堆积柱状图

(1)

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. x = np.arange(5)
  4. y1 = np.array([10,8,7,11,13])
  5. y2 = np.array([9,6,5,10,12])
  6. #柱形的宽度
  7. bar_width = 0.3
  8. #根据多组数据绘制柱形图
  9. plt.bar(x,y1,tick_label=['a','b','c','d','e'],color='dodgerblue',alpha=0.5,label='Male',width=bar_width)
  10. plt.bar(x,y2,bottom=y1,color='tomato',alpha=0.5,label='Female',width=bar_width)
  11. plt.legend() #显示图例
  12. plt.show()

百分比柱状图

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. x = np.arange(5)
  4. y1 = np.array([10, 8, 7, 11, 13])
  5. y2 = np.array([9, 6, 5, 10, 12])
  6. # 计算百分比
  7. total = y1 + y2
  8. y1_percent = (y1 / total) * 100
  9. y2_percent = (y2 / total) * 100
  10. # 柱形的宽度
  11. bar_width = 0.3
  12. # 根据百分比数据绘制柱形图
  13. plt.bar(x, y1_percent, tick_label=['a', 'b', 'c', 'd', 'e'], color='dodgerblue', alpha=0.5, label='Male', width=bar_width)
  14. plt.bar(x, y2_percent, bottom=y1_percent, color='tomato', alpha=0.5, label='Female', width=bar_width)
  15. plt.legend() # 显示图例
  16. plt.show()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/513310
推荐阅读
相关标签
  

闽ICP备14008679号