import matplotlib.pyplot as plt
import numpy as np
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=15) # 导入中文字体,打印中文标签
常用参数介绍:
x: x轴坐标;y: y轴坐标;s: 点标记的大小;c: 标记颜色;marker: 标记的形状;alpha: 标记透明度[0,1]
不常用:
cmap: 设置颜色条;norm: 颜色范围归一化;vmin,vmax: 颜色最大最小值;
linewidths: 标记边缘线形状;edgecolors: 标记边缘线颜色
X = np.random.randn(100) # 生成x轴的100个随机数
Y = np.random.randn(100) # 生成y轴的100个随机数
plt.figure(1)
plt.title("散点图练习", fontproperties=font)
plt.scatter(x=X, y=Y, s=100, c='y', marker='*', alpha=1, \
cmap='hot', norm=None, vmin=0, vmax=100, linewidths=None, edgecolors=None)
plt.xlabel('横坐标', fontproperties=font)
plt.ylabel('纵坐标', fontproperties=font)
plt.show()
X = np.random.randn(100) # 生成x轴的100个随机数
Y = np.random.randn(100) # 生成y轴的100个随机数
plt.figure(2)
plt.plot(X, Y, ".", color='b')
参数介绍:
x: x轴坐标(元组、列表、数组);height:条形图高度;width: 条形图宽度
bottom:设置条形基座的y坐标;align: 'center’基座在x位置,'edge’基座左边缘在x位置
alpha:条形图透明度;color:条形图颜色;label:条形图标签
plt.figure(3)
plt.rc('font', family='simhei', size=15) # 设置中文显示,字体大小
plt.rc('axes', unicode_minus=False) # 该参数解决负号显示的问题
c = ['大一', '大二', '大三', '大四'] # x轴刻度标记
x = np.arange(len(c))*0.8 # x轴刻度数,条形基座中间x位置数
g = [34, 32, 37, 35] # 条形图高度
b = [32, 31, 38, 40]
g1 = plt.bar(x=x, height=g, width=0.2, bottom=None, alpha=0.8, color='red', label="girl", \
align='edge', data=None)
"""
x: x轴坐标(元组、列表、数组);height:条形图高度;width: 条形图宽度
bottom:设置条形基座的y坐标;align: 'center'基座在x位置,'edge'基座左边缘在x位置
alpha:条形图透明度;color:条形图颜色;label:条形图标签
"""
b1 = plt.bar([x1+0.2 for x1 in x], height=b, width=0.2, alpha=0.8, color='blue', label="boy", align='edge')
"""
[x1+0.2 for x1 in x]:
for x1 in range(len(x)):
x[x1] += 1
"""
plt.title('各年级人数统计')
plt.legend() # 显示图例
plt.ylim(0, 80) # y轴刻度范围
plt.ylabel('人数') # y轴标签
plt.xticks([index + 0.2 for index in x], c) # 显示条形图的标签
plt.xlabel('班级') # x轴标签
# 在每一个条形图的顶部设置顶值
for r1 in g1:
height = r1.get_height()
plt.text(r1.get_x()+r1.get_width()/2, height+1, str(height), ha="center", va="bottom")
for r2 in b1:
height = r2.get_height()
plt.text(r2.get_x()+r2.get_width()/2, height+1, str(height), ha="center", va="bottom")
plt.show()
参数介绍:
x: x轴坐标(元组、列表、数组);bins:条形数量,也可以是数组[1,2,3,4],第一个条形范围为[1,2);
range: (x.min(), x.max()),概率分布范围上下限;density:True表示归一化处理,形成概率密度计算;
weights:给x所有值赋权重;cumulative:True,从小到大统计、False:从大到小统计
bottom:指定每个条形基座的在x轴的基线位置;histtype:直方图类型,bar、barstacked、step、stepfilled;
align: 指定条形基座的在x轴上相对基线的位置;alpha:条形图透明度;orientation:条形显示方式,horizontal、vertical
rwidth:宽度; log:True,对数刻度;stacked:堆叠;color:直方图颜色;label:直方图标签
plt.figure(4)
plt.rc('font', family='simhei', size=15) # 设置中文显示,字体大小
plt.rc('axes', unicode_minus=False) # 该参数解决负号显示的问题
data = np.random.randn(1000)
plt.hist(x=data, bins=20, range=None, density=False, weights=None, cumulative=False, bottom=None, \
histtype='stepfilled', align='mid', alpha=0.9, orientation='vertical', rwidth=None, log=False, \
color='y', stacked=True, edgecolor='black')
"""
# x: x轴坐标(元组、列表、数组);bins:条形数量,也可以是数组[1,2,3,4],第一个条形范围为[1,2);
range: (x.min(), x.max()),概率分布范围上下限;density:True表示归一化处理,形成概率密度计算;
weights:给x所有值赋权重;cumulative:True,从小到大统计、False:从大到小统计
bottom:指定每个条形基座的在x轴的基线位置;histtype:直方图类型,bar、barstacked、step、stepfilled;
align: 指定条形基座的在x轴上相对基线的位置;alpha:条形图透明度;orientation:条形显示方式,horizontal、vertical
rwidth:宽度; log:True,对数刻度;stacked:堆叠;color:直方图颜色;label:直方图标签
"""
plt.xlabel('概率分布区间')
plt.ylabel('频数or频率')
plt.title('分布直方图')
plt.show()
参数介绍:
explode:切片到圆心的距离
shadow:阴影
radius: 半径
plt.figure(5)
plt.rc('font', family='simhei', size=15) # 设置中文显示,字体大小
plt.rc('axes', unicode_minus=False) # 该参数解决负号显示的问题
lab = ['感冒', '肠胃不适', '过敏', '其它']
data = [48, 21, 18, 13]
color = ['red', 'green', 'blue', 'yellow']
explode = (0.1, 0, 0, 0)
plt.pie(x=data, explode=explode, labels=lab, colors=color, autopct='%1.1f%%', pctdistance=0.6, shadow=False, \
labeldistance=1.1, startangle=0, radius=0.5, counterclock=True, wedgeprops=None, textprops=None, \
center=(0, 0), frame=None, rotatelabels=True)
"""
explode:切片到圆心的距离
shadow:阴影
radius: 半径
"""
plt.title('生病人数及原因统计')
plt.legend() # 产生图例
plt.show()
注:画极坐标时,需要指定subplot()的参数projection=‘polar’
plt.figure(6)
t = np.arange(0, 2*np.pi, 0.2)
ax1 = plt.subplot(projection='polar')
ax1.plot(t, t/6, '--', lw=2)
plt.show()