大家好,小编为大家解答基于python的图表生成系统的问题。很多人还不知道python做图表的模块有哪些,现在让我们一起来看看吧!
目录
一、使用plot()绘制直线图
1. 代码实例:绘制直线图
二、使用plot()绘制折线图
1. 代码实例1:绘制折线图
2. 代码实例2:绘制折线+曲线
三、使用bar()绘制柱状图
1. 代码实例1: 单列柱状图绘制
2. 代码实例2:双列条形图绘制
3. 代码实例3:数据对比柱状图绘制
四、使用bath()绘制条形图
1. 代码实例 1:绘制单列条形图
2. 代码实例2:绘制双列条形图
五、使用pie()绘制饼图
1. 代码实例1:绘制十等分饼图
2. 代码实例2: 不同数据饼图绘制
六、使用scatter()绘制散点图
1. 代码实例1: 绘制sin散点图
2. 代码实例2:双数据散点图绘制
七、使用subplot()绘制子图
1. 代码实例1:通过plt的subplot绘制子图
2. 代码实例2:通过figure的add_subplot绘制子图
3. 代码实例3:多个函数的子图绘制
一、使用plot()绘制直线图
import matplotlib.pyplot as plt
x=[1, 2, 3, 4, 5]
y=[2, 4, 6, 8, 10]
plt.plot(x, y)
plt.show()
二、使用plot()绘制折线图
import matplotlib.pyplot as plt
x = [1,2,3,4,5,6,7,8,9,10]
y = [1,4,2,3,5,2,9,5,8,6]
plt.plot(x, y) # 展示的数据
plt.show() # 数据展示
import numpy as np
import matplotlib.pyplot as plt
plt.figure(dpi=130) # 设置绘图窗口的大小
plt.rcParams['font.sans-serif'] = 'SimHei' # 中文显示
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(0, 2*np.pi, 100) # 产生100个0到2π之间的元素
y = np.sin(x) + np.random.rand(100)
plt.plot(x, y,'r') # 折线图绘制
plt.plot(x, np.sin(x),'g') # sin(x)的曲线绘制
plt.legend(['折线', 'sin曲线']) # 设置图表的图例
plt.show()
三、使用bar()绘制柱状图
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5, 6]
y = [6, 5, 4, 3, 2, 1]
plt.bar(x,y, width = 0.8, align = 'center', color = 'blue')
plt.show()
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(3)
y = [2, 6, 3]
y1 = [6, 10, 4]
bar_width = 0.4
tick_label = ["A", "B", "C"]
plt.bar(x, y, align="center", color="c",width=bar_width,label="title_A",alpha=0.5)
plt.bar(x+bar_width, y1, align="center",color="b",width=bar_width,label="title_B",alpha=0.5)
plt.xticks(x+bar_width/2, tick_label)
plt.legend()
plt.show()
import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize=(9, 5)) # 绘制绘图窗口的大小
# 中文显示
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
# 设置图表数据
x = range(15)
np.random.seed(123)
y1 = np.random.random(15)
y2 = np.random.random(15)
# 绘制柱状图
plt.bar(x, y1, facecolor='#FFF68F')
plt.bar(x, -y2, facecolor='#9999FF')
# 柱状图注释设置
for i, j in zip(x, y1):
plt.text(i, j, '%.2f' % j, ha='center', va='bottom')
for i, j in zip(x, y2):
plt.text(i, -j, '%.2f' % j, ha='center', va='top')
plt.ylim(-1.2, 1.2) # 设置Y轴的范围
plt.title('数据对比')
plt.show()
四、使用bath()绘制条形图
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [60, 25, 78, 50]
plt.barh(x, y, align = 'center', color = 'blue')
plt.show()
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(4)
y = [6,10,4,5]
y1 = [2,6,3,8]
bar_width = 0.4
tick_label = ["A","B","C","D"]
plt.barh(x,y,bar_width,align="center",color="c",label="title_A",alpha=1)
plt.barh(x+bar_width,y1,bar_width,align="center",color="b",label="title_B",alpha=1)
plt.yticks(x+bar_width/2,tick_label)
plt.legend()
plt.show()
五、使用pie()绘制饼图
import matplotlib.pyplot as plt
import numpy as np
plt.figure(figsize=(5, 5)) # 设置绘图窗口
z = np.ones(10) # 设置一个十等份的数据
plt.pie(z, autopct='%.2f%%', explode=[0.1] + [0]*9, labels=list('ABCDEFGHIJ'), labeldistance=1.1)
plt.show()
import matplotlib.pyplot as plt
plt.figure(figsize=(5, 5))
x = [25, 45, 69, 30, 80, 12]
plt.pie(x, autopct='%.2f%%', labels=list('ABCDEF'))
plt.show()
六、使用scatter()绘制散点图
import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize=(9, 5)) # 绘制绘图窗口的大小
plt.rcParams['font.sans-serif'] = 'SimHei' # 中文显示
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(0, 2*np.pi, 100) # 产生100个0到2π之间的元素
y = np.sin(x) + np.random.rand(100)
plt.title('sin散点图')
plt.scatter(x, y)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
x1 = np.random.randn(20)
x2 = np.random.randn(20)
plt.figure(1)
plt.plot(x1, 'bo', markersize=20)
plt.plot(x2, 'ro', ms=10,)
plt.show()
七、使用subplot()绘制子图
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 画第1个子图:折线图
x=np.arange(1,100)
plt.subplot(221) # 第一行第一个子图
plt.plot(x,x*x)
# 画第2个子图:散点图
plt.subplot(222) # 第一行第二个子图
plt.scatter(np.arange(0,10), np.random.rand(10))
# 画第3个子图:饼图
plt.figure(figsize=(7, 7))
plt.subplot(223) # 第二行第一个子图
plt.pie(x=[15,30,45,10],labels=list('ABCD'),autopct='%.0f%%',explode=[0,0.05,0,0])
# 画第4个子图:条形图
plt.subplot(224) # 第二行第二个子图
plt.bar(['a','b','c','d','e'],[20,15,35,25,20],color='r')
plt.show()
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
fig=plt.figure(figsize=(7, 7))
# 画第1个图:折线图
x=np.arange(1,100)
ax1=fig.add_subplot(221)
ax1.plot(x,x*x)
# 画第2个图:散点图
ax2=fig.add_subplot(222)
ax2.scatter(np.arange(0,10), np.random.rand(10))
# 画第3个图:饼图
ax3=fig.add_subplot(223)
ax3.pie(x=[15,30,45,10],labels=list('ABCD'),autopct='%.0f%%',explode=[0,0.05,0,0])
# 画第4个图:条形图
ax4=fig.add_subplot(224)
ax4.bar(['a','b','c','d','e'],[20,15,35,25,20],color='r')
plt.show()
# coding=utf-8
import numpy as np
import matplotlib.pyplot as plt
# 创建一个两行两列的图表, ax表示每一个子图,是一个两行两列的矩阵
fig, ax = plt.subplots(2, 2, sharex=False, sharey=False)
# 在第1行第1列(ax[0][0])绘制正弦曲线
x = np.arange(-2 * np.pi, 2 * np.pi, 0.2)
sin_x = np.sin(x)
ax[0][0].plot(x, sin_x)
ax[0][0].set(title='y = sin(x)')
# 在第1行第2列绘制正弦曲线
cos_x = np.cos(x)
ax[0][1].plot(x, cos_x, 'r')
ax[0][1].set(title='y = cos(x)')
# 在第2行第1列绘制对数曲线
x = np.arange(1, 100, 0.01)
log_x = np.log(x)
ax[1][0].plot(x, log_x, 'g')
ax[1][0].set(title='y = log(x)')
# 在第2行第2列绘制指数曲线
x = np.arange(-1, 1, 0.01)
exp_x = np.exp(x)
ax[1][1].plot(x, exp_x, 'y')
ax[1][1].set(title='y = exp(x)')
# 调整子图之间的距离,wspace:为水平间隔百分比,hspace为垂直间隔百分比
plt.subplots_adjust(wspace=0.4, hspace=0.6) # 调整子图间距
plt.savefig('subplot.png') # 保存图表
plt.show() # 显示图表