python数据可视化——饼图

python数据可视化饼图

import pandas as pd
import numpy as np
from pandas import Series, DataFrame
import matplotlib.pyplot as plt
from matplotlib.font_manager import _rebuild
import matplotlib as mpl
_rebuild()
mpl.rcParams["font.sans-serif"] = [u"SimHei"]
mpl.rcParams["axes.unicode_minus"] = False


def fun1():
    y2016 = [13500,14500,25000,40000]
    y2017 = [16000,24000,37000,55000]
    labels = ["北京","杭州","上海","深圳"]
    #设定每个柱子的宽度
    bar_width = 0.45
    
    plt.bar(np.arange(4), y2016, label="2016",color="steelblue", alpha=0.8, width=bar_width)
    plt.bar(np.arange(4)+bar_width,y2017,label="2017",color="red",alpha=0.8,width=bar_width)
    plt.legend()
    plt.ylim([0,70000])
    plt.xticks([0.25,1.25,2.25,3.25],labels)
fun1()


plt.pie(x, explode=None, labels=None, colors=None, autopct=None,pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None,radius=None, counterclock=True, wedgeprops=None, textprops=None,center=(0, 0), frame=False, rotatelabels=False, hold=None, data=None)
# 参数说明:
# x:数组。输入的数据用于创建一个饼图。
# explode:数组,可选参数,默认为None。
#         如果不是None,是一个长度与x相同长度的数组,用来指定每部分的偏移量。
#         例如:explode=[0,0,0.2,0,0],第二个饼块被拖出。
# labels:列表,可选参数,默认为:None。
#        一个字符串序列作为每个饼块的标记。
# colors:数组,可选参数,默认为:None。
#       用来标注每块饼图的matplotlib颜色参数序列。
#       如果为None,将使用当前活动环的颜色。
# autopct:默认是None,字符串或函数,可选参数。
#         如果不是None,是一个字符串或函数用带有数值饼图标注。
# pctdistance:浮点数,可选参数,默认值:0.6。
#           每个饼切片的中心和通过autopct生成的文本开始之间的比例。
#           如果autopct是None,被忽略。
# shadow:布尔值,可选参数,默认值:False。
#         在饼图下面画一个阴影。
# labeldistance:浮点数,可选参数,默认值:1.1。
#             被画饼标记的直径。
# startangle:浮点类型,可选参数,默认:None。
#           如果不是None,从x轴逆时针旋转饼图的开始角度。
# radius:浮点类型,可选参数,默认为:None。
#       饼图的半径,如果半径是None,将被设置成1。
# counterclock:布尔值,可选参数,默认为:None。
#             指定指针方向,顺时针或者逆时针。
# wedgeprops:字典类型,可选参数,默认值:None。
#             参数字典传递给wedge对象用来画一个饼图。
#             例如:wedgeprops={'linewidth':3}设置wedge线宽为3。
# textprops:字典类型,可选参数,默认值为:None。
#           传递给text对象的字典参数。
# center:浮点类型的列表,可选参数,默认值:(0,0)。
#       图标中心位置。
# frame:布尔类型,可选参数,默认值:False。
#       如果是true,绘制带有表的轴框架。
# rotatelabels:布尔类型,可选参数,默认为:False。
#           如果为True,旋转每个label到指定的角度。
# 返回值:
# patches:列表。matplotlib.patches.Wedge实例列表。
# text:列表。matplotlib.text.Text实例label的列表。
# autotexts:列表。A是数字标签的Text实例列表。
#           仅当参数autopct不为None时才返回。
# '''



#饼图
def fun2():
    labels = ["中专","大专","本科","硕士","其它"]
    edu = [0.2515,0.3724,0.3336,0.0368,0.0057]
    colors= ["#9999FF","#ff9999","#7777aa","#2442aa","#dd5555"]
    explode = [0,0.1,0,0,0]
    
    plt.pie(x=edu,#绘图的数据
           labels=labels,#数据标签
           colors=colors,#饼图颜色
           autopct="%.1f%%",#设置百分比
           startangle=180,#设置初始角度
           #frame=1,
           #center=(2,2)
           explode=explode,#设置突出显示
           radius=1.5#设置饼的半径
           )
fun2()

#散点图
def fun3():
    x = np.random.randn(1000)
    y = np.random.randn(1000)
    color = np.random.random(3000).reshape((1000,3))
    plt.scatter(x,y,color='b',s=5)#s表示点的半径
fun3()


#子图
def fun4():
    plt.figure(figsize=(12,8))
    #第一行左一
    a1 = plt.subplot(2,3,1)
    x1 = np.arange(5)
    y1 = x1 + 5
    a1.plot(x1,y1)
    
    #第一行中
    a2 = plt.subplot(2,3,2)
    x2 = np.linspace(-np.pi,np.pi,256)
    y2 = np.sin(x2)
    a2.plot(x2,y2)
    
    #第一行右一
    a3 = plt.subplot(2,3,3)
    x3 = np.linspace(-np.pi,np.pi,256)
    y3 = np.cos(x3)
    a3.plot(x3,y3)
    
    #第二行左一
    a4 = plt.subplot(2,3,4)
    x4 = np.arange(5)
    y4 = x4 + 5
    a4.plot(x4,y4)
    
    #第二行中
    a5 = plt.subplot(2,3,5)
    x5 = np.linspace(-np.pi,np.pi,256)
    y5 = np.sin(x5)
    a5.plot(x5,y5)
    
    #第二行右一
    a6 = plt.subplot(2,3,6)
    x6 = np.linspace(-np.pi,np.pi,256)
    y6 = np.cos(x6)
    a6.plot(x6,y6)
fun4()


plt.savefig(fname, dpi=None, facecolor='w', edgecolor='w',orientation='portrait', papertype=None, format=None,transparent=False, bbox_inches=None, pad_inches=0.1,frameon=None, metadata=None)


#图片保存
fun4()
#fname保存图片的路径
#dpi分辨率(每英寸上有多少点)
plt.savefig(fname="test.jpg",dpi=500, facecolor="g")


猜你喜欢

转载自blog.csdn.net/qq_52006948/article/details/117793395