Python matplotlib绘制条形柱状图并添加数据标签
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python matplotlib绘制条形柱状图并添加数据标签相关的知识,希望对你有一定的参考价值。
参考技术A
最近在学习数据分析,用matplotlit绘制条形图,柱状图老师讲了加标签的方法,但是没有讲横向条形图加数据标签的方法,但是我想到业务场景可能会用到,于是自己写了一个脚本练习一下,用竖向条形图的方法加数据标签,怎么都加不上,百度找到一些解决方法,然后自己改了一下终于解决了这个问题。
重点在这个for循环
Python机器学习(六十九)Matplotlib 其他类型图形
Matplotlib 柱状图
柱状图/条形图是常见的图形类型,可使用bar()
方法绘制。
示例
# 导入numpy库与matplotlib.pyplot库
import numpy as np
import matplotlib.pyplot as plt
# 柱状图条目
divisions = ["Div-A", "Div-B", "Div-C", "Div-D", "Div-E"]
# 柱状图条目的值
divisions_average_marks = [70, 82, 73, 65, 68]
# 绘制图形
plt.bar(divisions, divisions_average_marks, color="green")
# 设置标题
plt.title("Bar Graph")
# 设置x轴标签
plt.xlabel("Divisions")
# 设置y轴标签
plt.ylabel("Marks")
# 显示
plt.show()
输出
示例
# 导入numpy库与matplotlib.pyplot库
import numpy as np
import matplotlib.pyplot as plt
# 柱状图条目
divisions = ["Div-A", "Div-B", "Div-C", "Div-D", "Div-E"]
# 柱状图条目的值
divisions_average_marks = [70, 82, 73, 65, 68]
boys_average_marks = [68, 67, 77, 61, 70]
index = np.arange(5)
width = 0.30
# 绘制图形
plt.bar(index, divisions_average_marks, width, color="green", label="Division Marks")
plt.bar(index + width, boys_average_marks, width, color="red", label="Boys Marks")
# 设置标题
plt.title("Bar Graph")
# 设置x轴标签
plt.xlabel("Divisions")
# 设置y轴标签
plt.ylabel("Marks")
# 设置 x 轴刻度
plt.xticks(index + width/2, divisions)
# 设置图例
plt.legend(loc=‘best‘)
# 显示
plt.show()
输出
示例
# 导入numpy库与matplotlib.pyplot库
import numpy as np
import matplotlib.pyplot as plt
# 柱状图条目
divisions = ["Div-A", "Div-B", "Div-C", "Div-D", "Div-E"]
# 柱状图条目的值
boys_average_marks = [68, 67, 77, 61, 70]
girls_average_marks = [72, 97,69, 69, 66]
index = np.arange(5)
width = 0.30
# 绘制图形
plt.bar(index, boys_average_marks, width, color="red", label="Boys Marks")
plt.bar(index, girls_average_marks, width, color="blue", label="Girls Marks", bottom=boys_average_marks)
# 设置标题
plt.title("Bar Graph")
# 设置x轴标签
plt.xlabel("Divisions")
# 设置y轴标签
plt.ylabel("Marks")
# 设置 x 轴刻度
plt.xticks(index, divisions)
# 设置图例
plt.legend(loc=‘best‘)
# 显示
plt.show()
输出
Matplotlib 饼图
饼图是另一种常见的图形类型,可以使用pie()
方法制作饼图。
示例
# 导入numpy库与matplotlib.pyplot库
import numpy as np
import matplotlib.pyplot as plt
# 准备数据:公司市场占有率
firms = ["Firm A", "Firm B", "Firm C", "Firm D", "Firm E"]
market_share = [20, 25, 15, 10, 20]
# 设置第二项为爆炸(散开)状态
Explode = [0, 0.1, 0, 0, 0]
# 绘制图形
plt.pie(market_share, explode=Explode, labels=firms, shadow=True, startangle=45)
plt.axis(‘equal‘)
plt.legend(title="List of Firms")
# 显示
plt.show()
输出
Matplotlib 直方图
直方图是一种非常常见的图表类型,尤其在概率统计很常用,是正态分布、t分布等各种分布的基础。直方图使用hist()
方法绘制。
示例
生成一个随机的连续数据,包含1000个条目,将这些数据划分为10个等分,根据其频率绘制图表。
直方图是一种非常常见的图表类型,尤其在概率统计很常用,是正态分布、t分# 导入numpy库与matplotlib.pyplot库
import numpy as np
import matplotlib.pyplot as plt
# 准备数据
x = np.random.randn(1000)
# 绘制图形
plt.title("Histogram")
plt.xlabel("Random Data")
plt.ylabel("Frequency")
plt.hist(x, 10)
# 显示
plt.show()
输出
Matplotlib 散点图
一个简单的例子展示了如何用matplotlib绘制散点图。
示例
# 导入numpy库与matplotlib.pyplot库
import numpy as np
import matplotlib.pyplot as plt
# 准备数据
n = 1024
X = np.random.normal(0, 1, n)
Y = np.random.normal(0, 1, n)
T = np.arctan2(Y, X)
# 绘制图形
plt.axes([0.025, 0.025, 0.95, 0.95])
plt.scatter(X, Y, s=75, c=T, alpha=.5)
plt.xlim(-1.5, 1.5)
plt.xticks(())
plt.ylim(-1.5, 1.5)
plt.yticks(())
# 显示
plt.show()
输出
Matplotlib 填充图
一个简单的例子展示了如何用matplotlib绘制填充图。
示例
# 导入numpy库与matplotlib.pyplot库
import numpy as np
import matplotlib.pyplot as plt
# 准备数据
n = 256
X = np.linspace(-np.pi, np.pi, n, endpoint=True)
Y = np.sin(2 * X)
# 绘制图形
plt.axes([0.025, 0.025, 0.95, 0.95])
plt.plot(X, Y + 1, color=‘blue‘, alpha=1.00)
plt.fill_between(X, 1, Y + 1, color=‘blue‘, alpha=.25)
plt.plot(X, Y - 1, color=‘blue‘, alpha=1.00)
plt.fill_between(X, -1, Y - 1, (Y - 1) > -1, color=‘blue‘, alpha=.25)
plt.fill_between(X, -1, Y - 1, (Y - 1) < -1, color=‘red‘, alpha=.25)
plt.xlim(-np.pi, np.pi)
plt.xticks(())
plt.ylim(-2.5, 2.5)
plt.yticks(())
# 显示
plt.show()
输出
Matplotlib 网格
一个简单的例子展示了如何用matplotlib绘制网格。
示例
import matplotlib.pyplot as plt
ax = plt.axes([0.025, 0.025, 0.95, 0.95])
ax.set_xlim(0,4)
ax.set_ylim(0,3)
ax.xaxis.set_major_locator(plt.MultipleLocator(1.0))
ax.xaxis.set_minor_locator(plt.MultipleLocator(0.1))
ax.yaxis.set_major_locator(plt.MultipleLocator(1.0))
ax.yaxis.set_minor_locator(plt.MultipleLocator(0.1))
ax.grid(which=‘major‘, axis=‘x‘, linewidth=0.75, linestyle=‘-‘, color=‘0.75‘)
ax.grid(which=‘minor‘, axis=‘x‘, linewidth=0.25, linestyle=‘-‘, color=‘0.75‘)
ax.grid(which=‘major‘, axis=‘y‘, linewidth=0.75, linestyle=‘-‘, color=‘0.75‘)
ax.grid(which=‘minor‘, axis=‘y‘, linewidth=0.25, linestyle=‘-‘, color=‘0.75‘)
ax.set_xticklabels([])
ax.set_yticklabels([])
# 显示
plt.show()
输出
Matplotlib 极坐标图
一个简单的例子展示了如何用matplotlib绘制极坐标图。
示例
import numpy as np
import matplotlib.pyplot as plt
ax = plt.axes([0.025, 0.025, 0.95, 0.95], polar=True)
N = 20
theta = np.arange(0.0, 2 * np.pi, 2 * np.pi / N)
radii = 10 * np.random.rand(N)
width = np.pi / 4 * np.random.rand(N)
bars = plt.bar(theta, radii, width=width, bottom=0.0)
for r,bar in zip(radii, bars):
bar.set_facecolor(plt.cm.jet(r/10.))
bar.set_alpha(0.5)
ax.set_xticklabels([])
ax.set_yticklabels([])
plt.show()
输出
Matplotlib 3D图
一个简单的例子展示了如何用matplotlib绘制3D图。
示例
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(-4, 4, 0.25)
Y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X ** 2 + Y ** 2)
Z = np.sin(R)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.cm.hot)
ax.contourf(X, Y, Z, zdir=‘z‘, offset=-2, cmap=plt.cm.hot)
ax.set_zlim(-2, 2)
plt.show()
输出
以上是关于Python matplotlib绘制条形柱状图并添加数据标签的主要内容,如果未能解决你的问题,请参考以下文章
Python使用matplotlib绘制柱状图(bar plot)实战:水平条形图垂直条形图分组条形图堆叠条形图
Python把matplotlib绘制的水平条形图(horizontal bar)转化为竖直的柱状图(vertical bar)实战
python绘制横向水平柱状条形图Bar
R语言ggplot2可视化柱状图并自定义柱体的宽度(通过变量指定条形的宽度)实战条形图并自定义条形的宽度实战
Python使用matplotlib可视化发散型条形图发散条形图(Diverging Bars)是一种可以同时处理负值和正值的条形图并按照大小排序区分数据(Diverging Bars)
Python机器学习(六十九)Matplotlib 其他类型图形