python绘图

概要

        1. 安装  matplotlib  库。
        2. 导入  matplotlib.pyplot  模块。
        3. 准备绘图数据。
        4. 使用相应的绘图函数(如  plot 、 bar 、 scatter  等)绘制图形。
        5. 设置图形的各种属性,如标题、坐标轴标签、刻度、颜色等。
        6. 可根据需要添加图例。
        7. 最后选择显示图形或保存图形文件。

整体架构流程

        1. 数据准备:(1)收集和整理需要可视化的数据。(2)确保数据的格式和类型适合绘图操作。
        2. 导入必要的库:主要是  matplotlib.pyplot  库,可能还会根据需求导入其他相关库,如  numpy  等。
        3. 创建图形和坐标轴:(1)使用  plt.figure()  创建一个新的图形窗口。(2) 通过  plt.subplot()  或其他类似函数设置坐标轴和子图布局。
        4. 绘制图形:(1)根据数据和需求选择合适的绘图函数,如  plt.plot()  绘制折线图、 plt.bar()  绘制柱状图等。(2)将数据传递给绘图函数,生成图形的基本框架。
        5. 图形美化和设置:(1)添加标题、坐标轴标签、图例等,使用 plt.title() 、 plt.xlabel() 、 plt.ylabel() 、 plt.legend()  等函数。(2)设置坐标轴的范围、刻度、格式等,使用  plt.xlim() 、 plt.ylim() 、 plt.xticks() 、 plt.yticks()  等函数。(3)调整图形的颜色、线条样式、标记等外观属性。
        6. 显示或保存图形:(1)使用  plt.show()  显示图形在屏幕上,供用户查看。(2)或者使用  plt.savefig()  将图形保存为图像文件,以便在其他地方使用。

技术名词解释

  • 线形图
  • 散点图
  • 折线图
  • 柱状图
  • 漏斗图

技术细节

1.线形图

   导入 matplotlib.pyplot  库以及可能需要的其他相关库,如 numpy等

import numpy as np
import matplotlib.pyplot as plt

 

        准备数据

data=np.arange(0,1.1,0.01)

    准备画布并开始画图

plt.rcParams['font.sans-serif']='FangSong'
plt.title('第一张线形图')
plt.xlabel('x轴的标签')
plt.ylabel('y轴的标签')
plt.xlim(0,1)
plt.ylim(0,1)
plt.xticks([0,0.2,0.4,0.6,0.8,1])
plt.yticks([0,0.25,0.5,0.75,1])
plt.plot(data,data**2)
plt.plot(data,data**4)
plt.legend(['y是x的平方','y是x的4次方'])
plt.savefig('E:/python/123.jpg')
plt.show()

 

1.2在同一张画布中,同时画两张图

   准备数据

x=np.arange(0,np.pi*2,0.01)

 准备画布并开始画图

plt.rcParams['axes.unicode_minus']=False
#准备画布
pl=plt.figure(figsize=(8,6),dpi=80)
#画第一张子图
ax1=pl.add_subplot(2,1,1)
plt.title('第一张线形图')
plt.xlabel('x轴的标签')
plt.ylabel('y轴的标签')
plt.xlim(0,1)
plt.ylim(0,1)
plt.xticks([0,0.2,0.4,0.6,0.8,1])
plt.yticks([0,0.25,0.5,0.75,1])
plt.plot(data,data**2)
plt.plot(data,data**4)
plt.legend(['y是x的平方','y是x的4次方'])

#画第二张图
plt.rcParams['lines.linestyle']='-.'
ax2=pl.add_subplot(2,1,2)
plt.title('第二张图')
plt.xlabel('x')
plt.ylabel('y')
plt.xlim(0,np.pi*2)
plt.ylim(-1,1)
plt.xticks([0,np.pi/2,np.pi,np.pi*1.5,np.pi*2])
plt.yticks([-1,-0.5,0,0.5,1])
plt.plot(x,np.sin(x))
plt.plot(x,np.cos(x))
plt.legend(['y=sin(x)','y=cos(x)'])
plt.savefig('E:/python/456.jpg')
plt.show()

2.散点图

   导入 matplotlib.pyplot  库以及可能需要的其他相关库,如 numpy等

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

   引入数据,数据是npz格式,要用numpy去读取数据

data=np.load('E:/python/2001-2019年劳动力与就业人员数据.npz',encoding='ASCII',allow_pickle=True)

   读取数据标签 

values=data['arr_0']
values=data['arr_1']

   准备开始画图 

plt.figure(figsize=(12,6),dpi=1080)
plt.xlabel('年份(年)')
plt.ylabel('劳动力人数(万人)')
plt.ylim(70000,85000)
plt.xticks(range(2001,2020,1),labels=values[:,0])
plt.title('2001-2019年劳动力人数散点图')
plt.scatter(values[:,0],values[:,1],marker='o',c='r',alpha=0.5)
plt.show()

 

 其他类型的散点图:

    导入 matplotlib.pyplot  库以及可能需要的其他相关库,如 numpy等

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

    读取数据

data=pd.read_csv('E:/python/hr.csv',encoding='gb2312')
data.head(2)

 

     设置中文字体,以免画图的时候中文显示有问题

plt.rcParams['font.sans-serif']=['SimHei']
sns.set_style({'font.sana-serif':['SimHei','Arial']})

     取头100条数据来画图

data1=data.head(100)

    先用matplotlib画散点图,x是每个月平均工作时长(小时),y取满意度水平,颜色(显示薪资水平)先设定,薪资水平用不同的颜色来显示(先取出薪资的取值情况,跟颜色对应,打包,然后转成典)

color_map=dict(zip(data1['薪资'].unique(),['b','y','r']))
#写个for循环,针对薪资水平分组的情况,分别画出散点图在图上
for species,group in data1.groupby('薪资'):
    plt.scatter(group['每月平均工作小时数(小时)'],group['满意度'],
                color=color_map[species],alpha=0.4,edgecolors=None,label=species)
plt.legend(frameon=True,title='薪资')
plt.xlabel('每月平均工作小时数(小时)')
plt.ylabel('满意度')
plt.title('满意度水平与每月工作时长的关系(按薪资水平分)')
plt.show()

    用seaborn画图

sns.lmplot(data1,x='每月平均工作小时数(小时)',y='满意度',hue='薪资',fit_reg=False,height=4)
plt.xlabel('每月平均工作小时数(小时)')
plt.ylabel('满意度')
plt.title('满意度水平与每月工作时长的关系(按薪资水平分)')
plt.show()

    尝试一样的图,调整主图看看情况

sns.set_style('whitegrid')
sns.set_style({'font.sans-serif':['SimHei','Arial']})

sns.lmplot(data1,x='每月平均工作小时数(小时)',y='满意度',hue='薪资',fit_reg=False,height=4)
plt.xlabel('每月平均工作小时数(小时)')
plt.ylabel('满意度')
plt.title('满意度水平与每月工作时长的关系(按薪资水平分)')
plt.show()

    尝试缩放元素

sns.set_style('darkgrid')
sns.set_context('paper')
sns.set_style({'font.sans-serif':['SimHei','Arial']})

sns.lmplot(data1,x='每月平均工作小时数(小时)',y='满意度',hue='薪资',fit_reg=False,height=4)
plt.xlabel('每月平均工作小时数(小时)')
plt.ylabel('满意度')
plt.title('满意度水平与每月工作时长的关系(按薪资水平分)')
plt.show()

    设置边框控制

sns.set_style('ticks')
sns.set_context('paper')
sns.despine()
sns.set_style({'font.sans-serif':['SimHei','Arial']})

sns.lmplot(data1,x='每月平均工作小时数(小时)',y='满意度',hue='薪资',fit_reg=False,height=4)
plt.xlabel('每月平均工作小时数(小时)')
plt.ylabel('满意度')
plt.title('满意度水平与每月工作时长的关系(按薪资水平分)')
plt.show()

    设置颜色色调

sns.set_style('ticks')
sns.set_context('paper')
sns.set_palette('Set2')
sns.set_style({'font.sans-serif':['SimHei','Arial']})

sns.lmplot(data1,x='每月平均工作小时数(小时)',y='满意度',hue='薪资',fit_reg=False,height=4)
plt.xlabel('每月平均工作小时数(小时)')
plt.ylabel('满意度')
plt.title('满意度水平与每月工作时长的关系(按薪资水平分)')
plt.show()

3.折线图

  导入 matplotlib.pyplot  库以及可能需要的其他相关库,如 numpy等

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

    引入数据,数据是npz格式,要用numpy去读取数据

data=np.load('E:/python/2001-2019年劳动力与就业人员数据.npz',encoding='ASCII',allow_pickle=True)

    读取数据标签 

values=data['arr_0']
values=data['arr_1']

    准备开始画图

plt.figure(figsize=(12,6),dpi=1080)
plt.xlabel('年份(年)')
plt.ylabel('劳动力人数(万人)')
plt.ylim(70000,85000)
plt.xticks(range(2001,2020,1),labels=values[:,0])
plt.title('2001-2019年劳动力人数散点图')
plt.plot(values[:,0],values[:,1],linestyle='-',c='r',alpha=0.5,marker='o')
plt.show()

4.柱状图

  导入 matplotlib.pyplot  库以及可能需要的其他相关库,如 numpy等

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

    引入数据,数据是npz格式,要用numpy去读取数据

data=np.load('E:/python/2001-2019年劳动力与就业人员数据.npz',encoding='ASCII',allow_pickle=True)

    读取数据标签 

values=data['arr_0']
values=data['arr_1']

    准备开始画图

labels=['城镇就业人员','乡村就业人员']
plt.figure(figsize=(6,6),dpi=1080)
plt.xlabel('类别')
plt.ylabel('人数(万人)')
plt.xticks(range(2),labels)
plt.title('2019城乡就业人数柱状图')
barl=plt.bar(range(2),values[-1,3:5],width=0.7,color=['r','c'],alpha=0.6)
plt.bar_label(barl)
plt.show()

 5.漏斗图

    导入 matplotlib.pyplot  库以及可能需要的其他相关库,如 numpy等

import pandas as pd
import numpy as np
from pyecharts import options as opts
from pyecharts.charts import Funnel

    读取数据

data=pd.read_excel('E:/python/某淘宝店铺的订单转化率统计数据.xlsx')
data.head(2)

    先转换标签数据

x_label=data['网购环节'].tolist()
x_label
y_label=data['人数'].tolist()
y_label

    把x和y数据重新组装

data1=[[x_label[i],y_label[i]]for i in range(len(x_label))]
data1

    开始画图

funnel=(
    Funnel()
    .add(
        series_name='漏斗图',
        data_pair=data1,
        label_opts=opts.LabelOpts(position='inside',formatter='{b}:{d}%'),
        gap=2,
        tooltip_opts=opts.TooltipOpts(trigger='item'),
        itemstyle_opts=opts.ItemStyleOpts(border_color='#fff',border_width=1)
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title='某宝店铺的订单转化率漏斗图'),
        legend_opts=opts.LegendOpts(pos_left='40%')
    )
)
funnel.render('E:/python/456.html')

注意:我这里是把图片保存到E盘里面了 

小结

        1. 准备数据:将需要绘制的数据整理成合适的格式。
        2. 导入相关库:如  matplotlib.pyplot  和可能需要的其他库(如  numpy )。
        3. 创建图形和坐标轴:使用  plt.figure()  创建图形对象, plt.subplot()  创建坐标轴对象。
        4. 绘制图形:根据数据和需求选择合适的绘图函数(如  plot 、 bar 、 scatter  等)进行绘图。
        5. 设置图形属性:包括标题、坐标轴标签、刻度、颜色、标记等,以提高图形的可读性和美观性。
        6. 添加图例(如有需要):使用  legend()  函数为多个数据系列添加图例。
        7. 显示或保存图形:通过  plt.show()  显示图形,或使用  plt.savefig()  保存为图像文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值