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 其他类型图形