栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Matplotlib学习(一)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Matplotlib学习(一)

柱状图和条形图

import pandas as pd
import matplotlib.pyplot as plt

#柱状图
#https://www.cnblogs.com/muchi/articles/11946852.html
#上面解决找不到SimHei字体的解决办法--参考博客
plt.rcParams['font.sans-serif']=['SimHei']
data=pd.read_excel(r"C:newapp01python_filepandas_filetest01.xlsx")
data.sort_values(by="分数",inplace=True,ascending=False)


# plt.bar(data.姓名,data.分数,label="成绩")  #画柱形图
# plt.xlabel("姓名")  #横坐标标签
# plt.ylabel("分数")  #纵坐标标签
# plt.xticks(data.姓名,rotation=45)  #倾斜角度
# plt.ylim([-30,150])  #设置纵坐标范围
# plt.tight_layout()  #紧凑型布局
# plt.legend(loc="upper right")  #显示label值
# plt.title("三年级成绩",fontsize=16,fontweight='bold')  #设置标题
# plt.savefig(r'C:tasktest01.jpg')
# plt.show()   #显示柱状图

#条形图
#horizontal是条形图,alpha是透明度
plt.bar(x=0,bottom=data.姓名,height=0.5,width=data.分数,color='red',orientation='horizontal',alpha=0.5)
plt.show()

添加数据标签的柱状图

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
data=pd.read_excel(r"C:newapp01python_filepandas_filetest02.xlsx")
data.sort_values(by="第二年",inplace=True,ascending=False)
# print(data['姓名'].values.tolist())
width=0.3
plt.bar(x=data.姓名,height=data.第一年,color="red",width=width,label="第一年")
plt.bar(x=np.arange(len(data.姓名))+width,height=data.第二年,color="blue",width=width,label="第二年")

plt.legend()     #显示label
plt.xticks(data.姓名)
x=plt.gca()
x.set_xticklabels(data.姓名,rotation=45,ha='center')  #va是垂直对齐方式,ha是水平对齐方式

#设置整体图形的间距
shape=plt.gcf()
shape.subplots_adjust(left=0.1,bottom=0.3)
for x, y1 in enumerate(data.第一年):   #设置数据标签,enumerate返回的是第一个位置坐标,第二个是数据值
    plt.text(x,y1/2,str(y1),fontsize=20,rotation=0,ha='center',va='bottom')  #y1/2表示把y1数据放在柱状图中间
for x, y2 in enumerate(data.第二年):
    plt.text(x+width,y2,str(y2),fontsize=20,rotation=0,ha='center',va='bottom')
plt.show()

饼图

import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
data=pd.read_excel(r"C:newapp01python_filepandas_filetest02.xlsx")
plt.pie(x=data.第一年,labels=tuple(data.姓名),
        explode=(0.2,0,0,0),    #explode:可以让分块延展出来或者收缩进去  ;
        colors=['blue','red','g','yellow'],
        autopct='%.1f%%',      # autopct: 设置百分比
        startangle=90,          #旋转90度
        counterclock=False,    #设置为顺时针
        labeldistance=0.7,    #标签到分块的距离,默认为1.1
        radius=1.5,          #半径
        pctdistance=0.3,     #默认0.6,百分比的数据的位置
        textprops={'fontsize':15,'color':'w'},  #标签的字体颜色设置
        shadow=True,   #显示阴影,达到3D效果
        )
plt.pie(x=data.第二年,radius=0.6)


plt.axis('equal')          #将饼图变为正圆
plt.legend(loc='upper right',
           fontsize=10,
           bbox_to_anchor=(1.1,1.05),
           borderaxespad=0.3,
           ncol=4,     #分为4列
           )   #添加图例及其位置

plt.savefig(r'C:newapp01python_filepandas_filebingtu3.jpg',
            dpi=200,  #dpi表示分辨率
            bbox_inches='tight'   #忽略不可见的轴
            )  #保存
plt.show()

折线图

import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
data=pd.read_excel(r"C:newapp01python_filepandas_filetest02.xlsx")

plt.plot(data.第一年,data.第二年,
         color='g',
         marker='*',  #用*标出关键节点
         ms=10,      #marker的标记大小
         )
for x, y in zip(data.第一年,data.第二年):   #设置数据标签,zip返回的x,y是分别传入两个列表的位置一一对应
    plt.text(x,y,str(y),fontsize=20,rotation=0,ha='center',va='bottom')
plt.show()

平均线

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
data=pd.read_excel(r"C:newapp01python_filepandas_filetest02.xlsx")
plt.bar(data.第一年,data.第二年,
          color='g',
        label='第二年',
        alpha=0.6,   #透明度
        )
plt.legend()
average=np.mean(data.第二年)  #平均线
plt.axhline(y=average,color='b',linestyle=':')  #  :表示虚线
plt.show()

玫瑰图

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
data=pd.read_excel(r"C:newapp01python_filepandas_filerose.xlsx")
colors=['b','gold','darkviolet','turquoise','r','g','grey','c',
        'm','y','k','darkorange','lightgreen','plum','cyan','fuchsia',
        'crimson','dodgerblue','skyblue','deeppink']
angle=np.linspace(0,2*np.pi,len(data.业绩),endpoint=False)   #角度
picture=plt.axes(polar=True)   #雷达图模板,含有轴线
#picture.set_theta_direction(-1)      #180度旋转
picture.set_theta_zero_location('N')  #让图片端正

grade=np.concatenate((data.业绩,[data.业绩[0]]))  #两个列表连接
angle=np.concatenate((angle,[angle[0]]))
name=np.concatenate((data.姓名,[data.姓名[0]]))
plt.bar(angle,grade,width=0.33,color=colors)

plt.bar(angle,height=150,width=0.33,color='white')

for angle,grade,name in zip(angle,grade,name):
    plt.text(angle+0.03,grade+100,str(name))

plt.gca().set_axis_off()    #关闭轴线

plt.savefig(r'C:newapp01python_filepandas_filerose.jpg',
            dpi=300,  #dpi表示分辨率
            bbox_inches='tight'   #忽略不可见的轴
            )
plt.show()

以上。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/822139.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号