python使用Matplotlib绘制多种常见图形
作者:??Python研究者???? 时间:2023-05-26 05:06:28
Matplotlib官网 如果想了解更多可查看官网。
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline #写了这个就可以不用写plt.show()
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
X = np.linspace(0, 2*np.pi,100)# 均匀的划分数据
Y = np.sin(X)
Y1 = np.cos(X)
plt.title("Hello World!!")
plt.plot(X,Y)
plt.plot(X,Y1)
X = np.linspace(0, 2*np.pi,100)
Y = np.sin(X)
Y1 = np.cos(X)
plt.subplot(211) # 等价于 subplot(2,1,1) #一个图版画两个图
plt.plot(X,Y)
plt.subplot(212)
plt.plot(X,Y1,color = 'r')
柱状图
data = [5,25,50,20]
plt.bar(range(len(data)),data)
水平绘制柱状图
data = [5,25,50,20]
plt.barh(range(len(data)),data)
多个柱状图
data = [[5,25,50,20],
[4,23,51,17],
[6,22,52,19]]
X = np.arange(4)
plt.bar(X + 0.00, data[0], color = 'b', width = 0.25,label = "A")
plt.bar(X + 0.25, data[1], color = 'g', width = 0.25,label = "B")
plt.bar(X + 0.50, data[2], color = 'r', width = 0.25,label = "C")
# 显示上面设置的 lable
plt.legend()
叠加型柱状图
data = [[5,25,50,20],
[4,23,51,17],
[6,22,52,19]]
X = np.arange(4)
plt.bar(X, data[0], color = 'b', width = 0.25)
plt.bar(X, data[1], color = 'g', width = 0.25,bottom = data[0])
plt.bar(X, data[2], color = 'r', width = 0.25,bottom = np.array(data[0]) + np.array(data[1]))
plt.show()
散点图
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
plt.scatter(x, y)
气泡图
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.randn(N) # 颜色可以用数值表示
area = np.pi * (15 * np.random.rand(N))**2 # 调整大小
plt.scatter(x, y, c=colors, alpha=0.5, s = area)
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.randint(0,2,size =50)
plt.scatter(x, y, c=colors, alpha=0.5,s = area)
直方图
a = np.random.rand(100)
plt.hist(a,bins= 20)
plt.ylim(0,15)
a = np.random.randn(10000)
plt.hist(a,bins=50)
plt.title("标准正太分布")
箱线图
x = np.random.randint(20,100,size = (30,3))
plt.boxplot(x)
plt.ylim(0,120)
# 在x轴的什么位置填一个 label,我们这里制定在 1,2,3 位置,写上 A,B,C
plt.xticks([1,2,3],['A','B','C'])
plt.hlines(y = np.median(x,axis = 0)[0] ,xmin =0,xmax=3)
添加文字描述
# 设置画布颜色为 blue
fig, ax = plt.subplots(facecolor='blue')
# y 轴数据
data = [[5,25,50,20],
[4,23,51,17],
[6,22,52,19]]
X = np.arange(4)
plt.bar(X+0.00, data[0], color = 'darkorange', width = 0.25,label = 'A')
plt.bar(X+0.25, data[1], color = 'steelblue', width = 0.25,label="B")
plt.bar(X+0.50, data[2], color = 'violet', width = 0.25,label = 'C')
ax.set_title("Figure 2")
plt.legend()
# 添加文字描述 方法一
W = [0.00,0.25,0.50]
for i in range(3):
for a,b in zip(X+W[i],data[i]):
plt.text(a,b,"%.0f"% b,ha="center",va= "bottom")
plt.xlabel("Group")
plt.ylabel("Num")
plt.text(0.0,48,"TEXT")
添加文字描述 方法二
X = np.linspace(0, 2*np.pi,100)# 均匀的划分数据
Y = np.sin(X)
Y1 = np.cos(X)
plt.plot(X,Y)
plt.plot(X,Y1)
plt.annotate('Points',
xy=(1, np.sin(1)),
xytext=(2, 0.5), fontsize=16,
arrowprops=dict(arrowstyle="->"))
plt.title("这是一副测试图!")
多个图形描绘 subplots
%pylab inline
pylab.rcParams['figure.figsize'] = (10, 6) # 调整图片大小
# np.random.seed(19680801)
n_bins = 10
x = np.random.randn(1000, 3)
fig, axes = plt.subplots(nrows=2, ncols=2)
ax0, ax1, ax2, ax3 = axes.flatten()
colors = ['red', 'tan', 'lime']
ax0.hist(x, n_bins, normed=1, histtype='bar', color=colors, label=colors)
ax0.legend(prop={'size': 10})
ax0.set_title('bars with legend')
ax1.hist(x, n_bins, normed=1, histtype='bar', stacked=True)
ax1.set_title('stacked bar')
ax2.hist(x, n_bins, histtype='step', stacked=True, fill=False)
ax2.set_title('stack step (unfilled)')
# Make a multiple-histogram of data-sets with different length.
x_multi = [np.random.randn(n) for n in [10000, 5000, 2000]]
ax3.hist(x_multi, n_bins, histtype='bar')
ax3.set_title('different sample sizes')
使用Pandas 绘图
import pandas as pd
df = pd.DataFrame(np.random.rand(50, 2), columns=['a', 'b'])
# 散点图
df.plot.scatter(x='a', y='b')
df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
# 绘制柱状图
df.plot.bar()
# 堆积的柱状图
df.plot.bar(stacked=True)
# 水平的柱状图
df.plot.barh(stacked=True)
df = pd.DataFrame({'a':np.random.randn(1000)+1,'b':np.random.randn(1000),'c':np.random.randn(1000) - 1}, columns=['a', 'b', 'c'])
# 直方图
df.plot.hist(bins=20)
# 箱线图
df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E'])
df.plot.box()
来源:https://juejin.cn/post/6999537385654468638
标签:python,Matplotlib,绘制,图形


猜你喜欢
asp如何制作一个WAP手机的WML网页?
2010-06-29 21:21:00
python 绘制国旗的示例
2023-01-05 19:29:32

将MySQL 5.0下的数据导入到MySQL 3.23中
2009-01-04 13:02:00
在Python程序中操作MySQL的基本方法
2024-01-20 18:30:46

简写一个的lightbox显示隐藏层效果(兼容)
2010-07-23 20:02:00
用IE浏览器UTF-8页面是一片空白
2009-06-14 19:55:00
MySQL通配符与正则表达式搜过滤数据详解
2024-01-23 03:12:54

MySQL高并发生成唯一订单号的方法实现
2024-01-28 00:27:38

SQL Server 更改DB的Collation
2024-01-26 23:22:35
GO中的条件变量sync.Cond详解
2024-02-10 15:08:35
Python pandas常用函数详解
2023-06-18 22:49:37
js实现选项卡效果
2024-05-09 10:12:01
Linux安装MySQL5.6.24使用文字说明
2024-01-24 22:20:54
pycharm新建一个python工程步骤
2023-08-22 17:42:54

基于mysql+mycat搭建稳定高可用集群负载均衡主备复制读写分离操作
2024-01-13 04:52:33
OpenCV半小时掌握基本操作之图像处理
2022-06-05 06:20:23

Sql Server:多行合并成一行,并做分组统计的两个方法
2024-01-15 22:22:21
python 运算符 供重载参考
2021-01-20 01:15:45
MySQL中slave_exec_mode参数详解
2024-01-18 07:36:34
Python爬取肯德基官网ajax的post请求实现过程
2021-03-31 13:54:00
