Python数据可视化:线型、Marker、简单折线图、多柱状图、基本饼形图与嵌套饼形图

Python数据可视化

一:Matplotlib

import matplotlib.pyplot as plt
import numpy as np
# plt,np取别名

matplotlib常用命令:

  • plt.figure(facecolor='颜色', figsize=(a,b)) 定义画布颜色和尺寸
  • 图表标题和图例

plt.title()

plt.xlabel()

plt.ylabel()

fontsize() # 字体大小

plt.legend()

  • x,y轴刻度

plt.xticks()

plt.yticks()

plt.tick_params(bottom,left,right,top) # 坐标轴刻度显示

plt.rcParams["ytick.direction"]="in" 坐标轴短线在里面显示

  • 图表中的网格线,颜色,线的类型

plt.grid(c="grey",linestyle"--")

线型说明
实线
——虚线
—.点画线
点线

legend()图例位置调整

  • matplotlib.pyplot.legend(loc='String' or Number, bbox_to_anchor=(num1, num2))
    在这里插入图片描述

Marker

标记说明
‘o’
‘+’加号
‘*’星号
‘x’叉号
‘s’方形
‘d’菱形
‘^’上三角
‘v’下三角
‘>’右三角
‘<’左三角
‘p’五角形
‘h’六角形

颜色缩写:

线型说明
y黄色
m品红色
c青蓝色
r红色
g绿色
b蓝色
w白色
k黑色

二:绘制折线图

实例一:读取excel文件绘制简单折线图

import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码问题
plt.figure(facecolor="grey", figsize=(8, 4))  # 设置画布的大小和颜色
plt.grid(axis="y", c="grey", linestyle="-")  # 设置网格线的样式,不显示y轴
plt.title("成绩折线图", fontsize=14)
plt.xlabel("姓名", fontsize=14)
plt.ylabel("成绩", fontsize=14)

# 读取excel数据
df = pd.read_excel(r'D:\Pycharm\data\student_score.xlsx', sheet_name=0)

x = df["姓名"]
y1 = df["数学"]
y2 = df["语文"]
y3 = df["英语"]

plt.plot(x, y1, marker="o", c="b", linestyle="--", linewidth=1)
plt.plot(x, y2, marker="s", c="r", linestyle="-.", linewidth=1)
plt.plot(x, y3, marker="p", c="g", linestyle="-", linewidth=1)
plt.legend(["数学", "语文", "英语"], loc="lower right")
plt.yticks(range(50, 150, 10))  # 设置y轴的刻度

plt.show()

输出结果:

在这里插入图片描述

实例二:绘制正余弦函数

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码问题
plt.rcParams['axes.unicode_minus']=False # 解决负号不显示问题
x1 = np.arange(0, 4*np.pi, 0.1)
y = np.sin(x1)
x2 = np.arange(0, 3.5*np.pi, 0.1)
z = np.cos(x2)
plt.plot(y, linewidth=1, c="b")
plt.plot(z, linewidth=1, c="r")
plt.legend(["sin x", "cos x"])

plt.title("正、余弦函数图像", fontsize=14)
plt.show()

在这里插入图片描述

三:绘制柱形图

示例一:多柱状图

  • plt.bar(x, height,width,align="center",kwargs)

x:传递数值序列,指定条形图中x轴的刻度值

height:柱子的高度,y轴数据

width:条形图的宽度,默认为0.8

bottom:用于绘制堆叠条形图

align:对齐方式

kwargs:关键字参数,其他可选参数:color、alpha、label

  • plt.text(x,y,string,va,ha)

x,y:文本标签的坐标

string:标注的值

va,ha:垂直和水平的对其方式

# 绘制基本柱状图
import pandas as pd 
import numpy as np
import matplotlib.pyplot as plt
# 解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['SimHei']
# 将坐标轴刻度线向内显示
plt.rcParams['xtick.direction'] = "in"
plt.rcParams['ytick.direction'] = "in"
plt.figure(facecolor="grey",figsize=(8, 6))
plt.grid(axis="y",linestyle="--",c="grey")
plt.title("2021年销售员业绩",fontsize=14)
plt.xlabel("月份",fontsize=14)
plt.ylabel("销量",fontsize=14)

df=pd.read_excel(r'C:\Users\Desktop\销量.xlsx', sheet_name=0)
# 建立两个空列表x0,month
x0=[]
month=[]
for i in range(1,13):
    month.append(str(i)+"月")
    x0.append(i)
plt.xticks(range(1,13),month)  # 定义x轴刻度范围

x=np.array(x0)  # 将列表x0转换为可以进行运算的

y1=df["数学"]
y2=df["语文"]
y3=df["英语"]

plt.bar(x-0.2,y1,width=0.2)
plt.bar(x,y2,width=0.2)
plt.bar(x+0.2,y3,width=0.2,alpha=0.5) # 为条形图的透明度


plt.legend(["数学","英语","语文"])
plt.show()

输出结果:

在这里插入图片描述

实例二:个性化柱状图

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

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['font.family'] = "Times New Roman"

fig, ax = plt.subplots(figsize=(10, 5))
# x轴不显示 plt.gca().axes.get_xaxis().set_visible(False)
# x轴刻度不显示
ax.tick_params(axis='x', direction='in', bottom=False)
# 读取Excel文件
df = pd.read_excel(r"D:\Pycharm\data\type.xlsx", sheet_name=0)

x0 = df["type"]

x = np.arange(len(x0))
y1 = df[1977]
y2 = df[2001]
y3 = df[2016]
plt.bar(x-0.2, y1, color="#130074", edgecolor="k", width=0.2)
plt.bar(x, y2, color="#CB181B", edgecolor="k", width=0.2)
plt.bar(x+0.2, y3, color="w", edgecolor="k", width=0.2)

ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['bottom'].set_visible(False)
ax.set_xticks(x)
ax.set_xticklabels(x0, size=10)
plt.ylabel("areas(ha)", fontsize=14)
plt.ylim(0, 250000)
plt.legend(["1977", "2001", "2016"])
plt.title("land use trend")
plt.show()

输出结果:

在这里插入图片描述

四:绘制饼形图

  • plt.pie(x,labels,colors,pctdistance,labeldistance,autopct,startangle,radius,center,textprops)

x:每一块饼形图比例

labels:每一块饼形图外侧显示的说明文字

colors:各块饼图的颜色

labeldistance:标记的位置

autopct:设置饼图百分比,可以使用格式化字符串或format函数

startangle:起始绘制角度,默认是x轴正方向逆时针开始绘制

radius:饼形图的半径,默认值为1

center:浮点类型列表,可选参数,默认值为(0,0)表示图表中心位置

pctdistance:饼内标签所在位置,所在饼图半径的比例

textprops:设置标签和比例文字的格式,字典类型

wedgeprops:设置饼图的宽度,边框,字典类型

实例一:基本饼形图

import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.figure(figsize=(10, 6))
# 读取Excel文件
df = pd.read_excel(r"D:\Pycharm\data\JD_手机销售数据.xlsx", sheet_name=0)

x = df["北京出库销量"]
labels = df["商品名称"]
plt.pie(x, autopct="%0.1f%%")
# 设置x,y轴刻度一致,保证饼形图为圆形
plt.axis("equal")
plt.title("2021年京东各手机品牌出库销售分析", fontsize=14)
plt.legend(df["商品名称"])
plt.show()

输出结果:

在这里插入图片描述

实例二:嵌套饼形图

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
elements = ["面粉", "砂糖", "奶油", "草莓酱", "坚果"]

weight1 = [40, 15, 20, 10, 15]
weight2 = [30, 25, 15, 20, 10]

plt.pie(weight1, autopct="%0.1f%%", radius=0.7, pctdistance=0.8,
        textprops=dict(color="w", fontsize=12), wedgeprops=dict(width=0.3, edgecolor="w"))
plt.pie(weight2, autopct="%0.1f%%", pctdistance=0.85,
        textprops=dict(color="w", fontsize=12), wedgeprops=dict(width=0.3, edgecolor="w"))

plt.axis("equal")
plt.legend(elements)
plt.show()

输出结果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值