Matplotlib基础图 图形详解

Matplotlib图形详解

一,全局的设置
import matplotlib as mpl
#设置中文字体的显示问题
mpl.rcParams['font.family'] = 'SimHei'

#文本在图上的任意位置显示
plt.text(13,35.2,'基础体温',bbox={'facecolor':'green', 'alpha':0.5, 'pad':10})

ax = plt.gca() #坐标轴实例
#设置坐标轴的间隔
ax.xaxis.set_major_locator(plt.MultipleLocator(1))
ax.yaxis.set_major_locator(plt.MultipleLocator(0.1))
二,plot图 (条形图)

标记

特点 描述
'.' 点标记
',' 像素标记
'o' 圆圈标记
'v' triangle_down 标记
'^' triangle_up 标记
'<' triangle_left 标记
'>' triangle_right 标记
'1' tri_down 标记
'2' tri_up 标记
'3' 三左标记
'4' tri_right 标记
'8' 八角形标记
's' 方形标记
'p' 五边形标记
'P' 加(填充)标记
'*' 星标
'h' hexagon1 标记
'H' hexagon2 标记
'+' 加号标记
'x' x 标记
'X' x(填充)标记
'D' 钻石标记
'd' 薄钻石标记
`' '`
'_' 线标记

线型

特点 描述
'-' 实线样式
'--' 虚线样式
'-.' 点划线样式
':' 虚线样式
'b'   #默认形状的蓝色标记
'or'  #红圈
'-g'  #绿色实线
'——'  #使用默认颜色的虚线
'^k:' #用虚线连接的黑色三角形标记
plot([1, 2, 3], [1, 2, 3], 'go-', label='line 1', linewidth=2)

plot(x, y, color='green', marker='o', linestyle='dashed',
     linewidth=2, markersize=12)
三,bar柱状图
plt.title('河北省景点总面积和游客量对比图',fontdict={'fontsize': 22 ,'color': 'black'})
plt.bar(hb_data['名称'],hb_data['总面积(平方公里)'],alpha=0.9, width = 0.35, facecolor = 'lightskyblue', edgecolor = 'white', label='总面积(平方公里)', lw=1)
plt.bar(np.arange(len(hb_data['名称']))+0.35,hb_data['游客量(万人次)'],alpha=0.9, width = 0.35, facecolor = 'indianred', edgecolor = 'white', label='游客量(万人次)', lw=1)
#x轴对齐两列中心
plt.xticks(np.arange(len(hb_data['名称']))+0.35/2,hb_data['名称'])
plt.legend(loc="upper left")

for x, y in enumerate(hb_data['总面积(平方公里)']):
    plt.text(x, y + 10, '%s' % y, ha='center', va='bottom')
for x, y in enumerate(hb_data['游客量(万人次)']):
    plt.text(x+0.35, y + 10, '%s' % y, ha='center', va='bottom')
plt.show()

四,pie饼图
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
 
plt.rcParams["font.family"] = ["simhei"]
# 绘制圆环图,并返回饼块对象
data = dict(zip(hb_data['名称'],hb_data['游客量(万人次)']))

# 构造数据
data = pd.DataFrame([data])
# 绘制圆环图,并返回饼块对象
wedges, texts = plt.pie(data.iloc[0], wedgeprops={"width": 0.5})
# 构造annotate函数的**kwargs参数,设置引导线线型
kw = dict(arrowprops=dict(arrowstyle="-"), zorder=0, va="center")
# 遍历饼块绘制注释标签和引导线
for i, p in enumerate(wedges):
    # 根据matplotlib.patches.Wedge对象的theta1和theta2参数计算饼块均分点的角度
    ang = (p.theta2 - p.theta1) / 2.0 + p.theta1
    # 根据角度的弧度计算 饼块均分点的坐标(引导线的起点)
    y = np.sin(np.deg2rad(ang))
    x = np.cos(np.deg2rad(ang))
#     print(p.theta1, p.theta2, ang, np.deg2rad(ang), x, y)
    # 演示引导线起点位置
    plt.plot(x, y, "or")
    # 根据x的值即角度所在象限确定引导线的对齐方式
    horizontalalignment = {-1: "right", 1: "left"}[int(np.sign(x))]
    # 设置引导线的连接方式
    connectionstyle = "angle,angleA=0,angleB={}".format(ang)
    kw["arrowprops"].update({"connectionstyle": connectionstyle})
    # 绘制注释标签和引导线
    plt.annotate(
        data.columns[i],
        xy=(x, y),
        xytext=(1.35 * np.sign(x), 1.2 * y),
        horizontalalignment=horizontalalignment,
        **kw
    )
plt.pie(data.iloc[0],autopct = '%0.2f%%',wedgeprops={"width": 0.5},textprops={'fontsize':18,'color':'k'})
plt.title("河北省各景点游客量占比",fontdict={'fontsize': 22 ,'color': 'black'})
plt.show()

posted @ 2022-10-16 10:31  不落微笑  阅读(127)  评论(0)    收藏  举报