赞
踩
matplotlib.pyplot.bar(x, height, width: float = 0.8, bottom = None, *, align: str = ‘center’, data = None, **kwargs)
- import matplotlib.pyplot as plt
-
- # x轴数据
- x = range(5)
-
- # y轴数据
- data = [5, 20, 15, 25, 10]
-
- # 设置图形标题
- plt.title("基本柱状图")
-
- # 绘制网格
- plt.grid(ls="--", alpha=0.5)
-
- # bar绘制图形,x 表示x坐标 data为表示柱状图的高度
- plt.bar(x, data)
柱状图的起始位置,也就是y轴的起始坐标,默认值为None
- import matplotlib.pyplot as plt
-
- # x轴数据
- x = range(5)
-
- # y轴数据
- data = [5, 20, 15, 25, 10]
-
- # 设置图形标题:
- plt.title("基本柱状图")
-
- # 绘制网格
- plt.grid(ls="--", alpha=0.5)
-
- # bar绘制图形,x 表示x坐标 data为表示柱状图的高度
- plt.bar(x, data, bottom=[10, 20, 5, 0, 10])
-
- # 注意data = [5, 20, 15, 25, 10] ----对应的bottom-->[10, 20, 5, 0, 10]
- import matplotlib.pyplot as plt
-
- # x轴数据
- x = range(5)
-
- # y轴数据
- data = [5, 20, 15, 25, 10]
-
- # 设置图形标题:
- plt.title("设置柱状图颜色")
-
- # 绘制网格
- plt.grid(ls="--", alpha=0.5)
-
- # bar绘制图形,x 表示x坐标 data为表示柱状图的高度
- plt.bar(x, data ,facecolor="green")
- #plt.bar(x, data ,color="green")
- import matplotlib.pyplot as plt
-
- # x轴数据
- x = range(5)
-
- # y轴数据
- data = [5, 20, 15, 25, 10]
-
- # 设置图形标题:
- plt.title("color参数设置柱状图不同颜色")
-
- # 绘制网格
- plt.grid(ls="--", alpha=0.5)
-
- # bar绘制图形,x 表示x坐标 data为表示柱状图的高度
- '''
- facecolor和color设置单个颜色时使用方式一样
- color可以设置多个颜色值,facecolor不可以
- '''
- plt.bar(x, data ,color=['r', 'g', 'b'])
- import matplotlib.pyplot as plt
-
- data = [5, 20, 15, 25, 10]
-
- plt.title("设置边缘线条样式")
-
- plt.bar(range(len(data)), data, ec='r', ls='--', lw=2)
同一 x 轴位置绘制多个柱状图,主要通过调整柱状图的宽度和每个柱状图x轴的 起始位置
需要绘制如下图形:
分析:
- from matplotlib import pyplot as plt
- import numpy as np
-
- # 国家
- countries = ['挪威', '德国', '中国', '美国', '瑞典']
-
- # 金牌个数
- gold_medal = [16, 12, 9, 8, 8]
- # 银牌个数
- silver_medal = [8, 10, 4, 10, 5]
- # 铜牌个数
- bronze_medal = [13, 5, 2, 7, 5]
-
- # 1.将x轴转换为数值
- x_int = np.arange(len(countries))
-
- # 2.设置图形的宽度
- width = 0.2
-
- # 确定x起始位置
- gold_x = x_int # 金牌起始位置
-
- silver_x = x_int + width # 银牌的起始位置
-
- bronze_x = x_int + 2 * width # 铜牌的起始位置
-
- # 分别绘制图形
-
- plt.bar(gold_x, gold_medal, width=width, color="gold", label="金牌") # 金牌图形
-
- plt.bar(silver_x, silver_medal, width=width, color="silver", label="银牌") # 银牌图形
-
- plt.bar(bronze_x, bronze_medal, width=width, color="saddlebrown", label="铜牌") # 铜牌图形
-
- # 移动x标记的位置,再替换内容
- plt.xticks(x_int + width,labels=countries)
-
- #-----------显示高度文本----------------
- for i in range(len(countries)):
- # 金牌
- plt.text(gold_x[i],gold_medal[i], gold_medal[i],va="bottom",ha="center",fontsize=8)
- # 银牌
- plt.text(silver_x[i],silver_medal[i],gold_medal[i],va="bottom",ha="center",fontsize=8)
- # 铜牌
- plt.text(bronze_x[i],bronze_medal[i],gold_medal[i],va="bottom",ha="center",fontsize=8)
-
- # 显示图例
- plt.legend()
绘制各国的金牌榜 银牌榜和铜牌榜 总榜单
- from matplotlib import pyplot as plt
- import numpy as np
-
- # 国家
- countries = ['挪威', '德国', '中国', '美国', '瑞典']
-
- # 金牌个数
- gold_medal = [16, 12, 9, 8, 8]
- # 银牌个数
- silver_medal = [8, 10, 4, 10, 5]
- # 铜牌个数
- bronze_medal = [13, 5, 2, 7, 5]
-
- # 设置画布
- fig = plt.figure(figsize=(6,4),dpi=150)
-
- # 一个画布分为2行3列,定位第一个
- ax1 = fig.add_subplot(234)
-
- ax1.set_title("金牌榜")
- # 旋转x标签
- ax1.tick_params(axis="x",rotation=45)
-
- # 金牌榜
- ax1.bar(countries, gold_medal, color="gold")
-
-
- # 一个画布分为2行3列,定位第二个
- ax2 = fig.add_subplot(235)
-
- ax2.set_title("银牌榜")
- # 旋转x标签
- ax2.tick_params(axis="x",rotation=45)
-
- # 银牌榜
- ax2.bar(countries, silver_medal, color="silver")
-
-
-
- # 一个画布分为2行3列,定位第三个
- ax3 = fig.add_subplot(236)
-
- ax3.set_title("铜牌榜")
- # 旋转x标签
- ax3.tick_params(axis="x",rotation=45)
-
- # 铜牌榜
- ax3.bar(countries, bronze_medal, color="#A0522D")
-
-
- # ================绘制总图:绘制2行一列,移动到第一行======
- ax = fig.add_subplot(211)
-
- # 1.将x轴转换为数值
- x_int = np.arange(len(countries))
-
- # 2.设置图形的宽度
- width = 0.2
-
- # 确定x起始位置
- gold_x = x_int # 金牌起始位置
-
- silver_x = x_int+width # 银牌的起始位置
-
- bronze_x = x_int + 2*width # 铜牌的起始位置
-
- # 分别绘制图形
-
- ax.bar(gold_x, gold_medal, width=width,color="gold", label="金牌") # 金牌图形
-
- ax.bar(silver_x, silver_medal, width=width, color="silver",label="银牌") # 银牌图形
-
- ax.bar(bronze_x, bronze_medal, width=width, color="saddlebrown",label="铜牌") # 铜牌图形
-
- # 移动x标记的位置,再替换内容
- ax.set_xticks(x_int + width)
-
- ax.set_xticklabels(countries)
-
- #-----------显示高度文本----------------
- # 金牌 # 银牌 # 铜牌
- for i in range(len(countries)):
- # 金牌
- ax.text(gold_x[i],gold_medal[i], gold_medal[i],va="bottom",ha="center",fontsize=8)
- # 银牌
- ax.text(silver_x[i],silver_medal[i], gold_medal[i],va="bottom",ha="center",fontsize=8)
- # 铜牌
- ax.text(bronze_x[i],bronze_medal[i], gold_medal[i],va="bottom",ha="center",fontsize=8)
-
-
- # 显示图例
- ax.legend(fontsize=6 )
-
- # 处理标题覆盖
- plt.tight_layout()
所谓堆叠柱状图就是将不同数组别的柱状图堆叠在一起,堆叠后的柱状图高度显示了两者相加的结果值。 如图:
分析:
- from matplotlib import pyplot as plt
- import numpy as np
-
- countries = ['挪威', '德国', '中国', '美国', '瑞典']
- # 金牌个数
- gold_medal = np.array([16, 12, 9, 8, 8])
- # 银牌个数
- silver_medal = np.array([8, 10, 4, 10, 5])
- # 铜牌个数
- bronze_medal = np.array([13, 5, 2, 7, 5])
-
- # 绘制堆叠图
-
- # 宽度
- width = 0.3
-
- # 解决中文不显示问题
- # 使用中文需要进行配置信息的设置 字体设置时,字体名称不区别大小写
- plt.rcParams['font.sans-serif'] = ["SimHei"]
-
- # 绘制金牌
- plt.bar(countries, gold_medal, color='gold', label='金牌',bottom=silver_medal + bronze_medal,width=width)
-
- # 绘制银牌
- plt.bar(countries, silver_medal, color='silver', label='银牌', bottom=bronze_medal,width=width)
-
- # 绘制铜牌
- plt.bar(countries, bronze_medal, color='#A0522D', label='铜牌',width=width)
-
- # 设置坐标轴
- plt.ylabel('奖牌数')
-
- # 设置图例
- plt.legend(loc='upper right')
-
-
- # 设置文本值
- for i in range(len(countries)):
- max_y = bronze_medal[i]+silver_medal[i]+gold_medal[i]
- plt.text(countries[i], max_y, max_y, va="bottom", ha="center")
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。