精华内容
下载资源
问答
  • Python 饼图

    万次阅读 多人点赞 2019-03-07 14:35:18
    python 画图--饼图 这是python画图系列第三篇--饼图 画饼图用到的方法为: matplotlib.pyplot.pie() 参数为: pie(x, explode=None, labels=None, colors=('b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'), ...

    python 画图--饼图

    这是python画图系列第三篇--饼图

    画饼图用到的方法为:

    matplotlib.pyplot.pie()

    参数为:


    pie(x, explode=None, labels=None,
        colors=('b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'),
        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 )

    参数说明:

    x       (每一块)的比例,如果sum(x) > 1会使用sum(x)归一化
    labels  (每一块)饼图外侧显示的说明文字
    explode (每一块)离开中心距离
    startangle  起始绘制角度,默认图是从x轴正方向逆时针画起,如设定=90则从y轴正方向画起
    shadow  是否阴影
    labeldistance label绘制位置,相对于半径的比例, 如<1则绘制在饼图内侧
    autopct 控制饼图内百分比设置,可以使用format字符串或者format function
            '%1.1f'指小数点前后位数(没有用空格补齐)
    pctdistance 类似于labeldistance,指定autopct的位置刻度
    radius  控制饼图半径

    返回值:
    如果没有设置autopct,返回(patches, texts)
    如果设置autopct,返回(patches, texts, autotexts)
    patches -- list --matplotlib.patches.Wedge对象

    texts autotexts -- matplotlib.text.Text对象


    下面是一个简单的示例:


    # -*- coding: utf-8 -*-
    import numpy as np  
    import matplotlib.mlab as mlab  
    import matplotlib.pyplot as plt  
    labels=['China','Swiss','USA','UK','Laos','Spain']
    X=[222,42,455,664,454,334]  

    fig = plt.figure()
    plt.pie(X,labels=labels,autopct='%1.2f%%') #画饼图(数据,数据对应的标签,百分数保留两位小数点)
    plt.title("Pie chart")
      

    plt.show()  
    plt.savefig("PieChart.jpg")

    下面是结果:


    下面是另一个示例:


    # -*- coding: utf-8 -*-
    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib as mpl

    def draw_pie(labels,quants):
        # make a square figure
        plt.figure(1, figsize=(6,6))
        # For China, make the piece explode a bit
        expl = [0,0.1,0,0,0,0,0,0,0,0]   #第二块即China离开圆心0.1
        # Colors used. Recycle if not enough.
        colors  = ["blue","red","coral","green","yellow","orange"]  #设置颜色(循环显示)
        # Pie Plot
        # autopct: format of "percent" string;百分数格式
        plt.pie(quants, explode=expl, colors=colors, labels=labels, autopct='%1.1f%%',pctdistance=0.8, shadow=True)
        plt.title('Top 10 GDP Countries', bbox={'facecolor':'0.8', 'pad':5})
        plt.show()
        plt.savefig("pie.jpg")
        plt.close()

    # quants: GDP

    # labels: country name

    labels   = ['USA', 'China', 'India', 'Japan', 'Germany', 'Russia', 'Brazil', 'UK', 'France', 'Italy']

    quants   = [15094025.0, 11299967.0, 4457784.0, 4440376.0, 3099080.0, 2383402.0, 2293954.0, 2260803.0, 2217900.0, 1846950.0]

    draw_pie(labels,quants)

    展开全文
  • python饼图标注标签

    2021-04-27 09:35:41
    我是Python的初学者。在错误,如AttributeError:“list”对象没有属性“theta2”TypeError:“function”对象不可读取属性错误:'数字.int64'对象没有属性'theta2'这是我的代码:from collections import Counter...

    但是,我在尝试应用重叠标签时遇到了一些问题。。有什么想法。。。我是Python的初学者。在

    错误,如

    AttributeError:“list”对象没有属性“theta2”

    TypeError:“function”对象不可读取

    属性错误:'数字.int64'对象没有属性'theta2'

    这是我的代码:from collections import Counter

    import numpy as np

    import matplotlib

    import matplotlib.pyplot as plt

    import matplotlib.cm as cm, matplotlib.font_manager as fm

    import pandas as pd

    import csv

    import itertools

    from collections import OrderedDict

    import operator

    # Create database of duplicates - check if the mac and os pairs have duplicates

    reader = csv.reader(open('Workbook1.csv', 'r'), delimiter=',')

    writer = csv.writer(open('remacos.csv', 'w'), delimiter=',')

    entries = set()

    for row in reader:

    key = (row[1], row[2])

    if key not in entries:

    writer.writerow(row)

    entries.add(key)

    del writer #Force the writer to clean up

    # Create database of duplicates - check if the mac and browser pairs have duplicates

    reader = csv.reader(open('Workbook1.csv', 'r'), delimiter=',')

    writer = csv.writer(open('remacbrowser.csv', 'w'), delimiter=',')

    entries = set()

    for row in reader:

    key = (row[1], row[3])

    if key not in entries:

    writer.writerow(row)

    entries.add(key)

    del writer #Force the writer to clean up

    df = pd.read_csv('remacos.csv', index_col="mac")

    counteros = Counter(df['os'])

    os_names = counteros.keys()

    os_counts = counteros.values()

    # Read Removed Duplicated entries Database and Count Values for Browsers.

    df = pd.read_csv('remacbrowser.csv', index_col="mac")

    counterbrowsers = Counter(df['browser'])

    browser_names = counterbrowsers.keys()

    browser_counts = counterbrowsers.values()

    #New Bar Chart with Fonts

    countdata = df['browser'].value_counts()

    ax = countdata.plot(kind='bar',

    figsize=[9, 6],

    width=0.9,

    alpha=0.6,

    color='g',

    edgecolor='w',

    grid=False,

    ylim=[0, 400])

    ax.set_xticks(range(len(countdata)))

    ax.set_xticklabels(countdata.index, rotation=45, rotation_mode='anchor', ha='right', fontproperties=ticks_font)

    ax.yaxis.grid(True)

    for label in ax.get_yticklabels():

    label.set_fontproperties(ticks_font)

    ax.set_title('Most Popular Browsers', fontproperties=title_font)

    ax.set_xlabel('', fontproperties=label_font)

    ax.set_ylabel('Number of counts', fontproperties=label_font)

    plt.show()

    # Make Pie Chart for Browsers

    plt.figure(figsize=plt.figaspect(1))

    #values = sorted(browser_counts)

    #labels = browser_names

    labels, values = zip(*sorted(counterbrowsers.items(), key=lambda x: x[1])) #Counteros is the Dictionary-like object we are trying to sort. This 'zip' solves the problem of sorting each of them independently. This will sort as pairs, by value.

    colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral', '#008DB8','#00AAAA','#001CF0','#00FF80', 'c','m','r','b', '#191970','#0038E2','#0055D4','#0071C6','#00E28E', '#00C69C']

    #explode = (0, 0, 0, 0.1, 0.1, 0.2, 0.3, 0.4, 0.6)

    explode = list()

    for k in labels:

    explode.append(0.1)

    #sizes = counts.values.tolist()

    def make_autopct(values):

    def my_autopct(pct):

    total = sum(values)

    val=int(round(pct*total/100))

    return '{p:.2f}% ({v:d})'.format(p=pct,v=val)

    return my_autopct

    pie = plt.pie(values, labels=labels, explode=explode, colors=colors, shadow=True, startangle=90, autopct=make_autopct(values))

    bbox_props = dict(boxstyle="square,pad=0.3", fc="w", ec="k", lw=0.72)

    arrowprops=dict(arrowstyle="-",connectionstyle="angle,angleA=0,angleB=90")

    kw = dict(xycoords='data',textcoords='data',arrowprops=arrowprops,

    bbox=bbox_props, zorder=0, va="center")

    for i, p in enumerate(pie):

    ang = (p.theta2 - p.theta1)/2.+p.theta1

    y = np.sin(ang/180.*np.pi)

    x = 1.35*np.sign(np.cos(ang/180.*np.pi))

    plt.gca().annotate(str(1+i), xy=(0, 0), xytext=( x, y), **kw )

    plt.legend(labels, loc="lower right")

    plt.axis('equal') # Set aspect ratio to be equal so that pie is drawn as a circle, # View the plot drop above

    plt.title('Browsers Analytics', bbox={'facecolor':'0.8', 'pad':5})

    plt.show()

    CSV文件显示在如下表中:

    一个CSV比较Mac地址和浏览器

    另一个CSV链接Mac和OS以获取计数数据。在这个饼图中,我只是想弄一个来显示我可以复制结果(希望如此)。在

    ^{pr2}$

    条形图只是显示数据的一种方式,但目标是在带有标注的饼图中显示数据。我很难实现重叠/调用标签的解决方案。这里用于枚举(pie)中i,p的值是我得到错误的地方,比如AttributeError:“list”对象没有属性“theta2”Traceback (most recent call last):

    File "csv-test.py", line 176, in

    ang = (p.theta2 - p.theta1)/2.+p.theta1

    AttributeError: 'list' object has no attribute 'theta2'

    如果将(饼图)值更改为(counterbrowser),则得到:Traceback (most recent call last):

    File "csv-test.py", line 176, in

    ang = (p.theta2 - p.theta1)/2.+p.theta1

    AttributeError: 'str' object has no attribute 'theta2'

    Patches=pie显示以下错误(将(pie)替换为Patches)Traceback (most recent call last):

    File "csv-test.py", line 176, in

    ang = (p.theta2 - p.theta1)/2.+p.theta1

    AttributeError: 'list' object has no attribute 'theta2'

    展开全文
  • Python饼图、调整字体大小

    千次阅读 2021-12-12 12:56:19
    推荐两个非常好的博客内容: ...Python实现可视化(二)--label字体大小调整、图例设置https://blog.csdn.net/weixin_39602776/article/details/111314454Python绘制饼图调节字体大小、防止标签重叠解决方法 ...

    推荐两个非常好的博客内容:

    Python实现可视化(二)--label字体大小调整、图例设置icon-default.png?t=LA92https://blog.csdn.net/weixin_39602776/article/details/111314454Python绘制饼图调节字体大小、防止标签重叠解决方法 icon-default.png?t=LA92https://www.cnblogs.com/mengxiaoleng/p/12804117.html然后是我自己的饼图代码,里面用到了字体大小调整这部分的功能:

    import matplotlib
    import matplotlib.pyplot as plt
    matplotlib.rcParams['backend'] = 'SVG'
    A=[15.8,0.6,0.0296]
    labels='','',''
    sizes=A[0],A[1],A[2]
    explode=0.05,0.1,0.15
    colors='skyblue','gold','green'
    fig,ax = plt.subplots(figsize=(13,7))  #创建大小为(14,7)的画布,同时创建一个axes,把axes赋值给ax
    patches,l_text,p_text=ax.pie(sizes,explode=explode,labels=labels,
          colors=colors,autopct='%1.1f%%',shadow=False,startangle=50)
    # ax.set_title('FEMM Loss percentage',fontsize=18)
    ax.legend(labels = ['conductor 1','conductor 2','others'],loc=2,fontsize=14)
    ax.set_aspect('equal')
    for t in p_text:
        t.set_size(15)

    展开全文
  • linewidth(2) con.set_color=([0,0,0]) ax2.add_artist(con) 参考:python生成复合饼图 环形图 加入参数wedgeprops=dict(width=0.3, edgecolor='w') a = pe[pe.PID.isin(ksf.PID.drop_duplicates())].性别.value_...

    复合饼图

    fig = plt.figure(figsize=(10,4))
    ax1 = fig.add_subplot(121)
    a = kcf.groupby('一级分类').总金额.sum().sort_values(ascending=False)
    ax1.pie(a, labels=a.index, autopct='%.2f%%',startangle=-110, explode=[0,0.1],
            colors=['#508cb4','#d7e4ef'])
    plt.title('一级分类销售额分类汇总')
    ax2 = fig.add_subplot(122)
    a = kcf[kcf.一级分类=='饮料'].groupby('二级分类').总金额.sum().sort_values(ascending=False)
    ax2.pie(a, radius=0.9, labels=a.index, autopct='%.2f%%', colors=['#265f95', '#508cb4', '#89b5ce', '#c5d8e7', '#e7eff7'])
    plt.title('饮料品类下的销售额分类汇总')
    
    #使用ConnectionPatch画出两个饼图的间连线
    #先得到饼图边缘的数据
    theta1, theta2 = ax1.patches[0].theta1+20, ax1.patches[0].theta2-20
    center, r = ax1.patches[0].center,ax1.patches[0].r
    x = r*np.cos(np.pi/180*theta2)+center[0]
    y = np.sin(np.pi/180*theta2)+center[1]
    con = ConnectionPatch(xyA=(0, 0.9),xyB=(x,y),
                         coordsA='data', coordsB='data',axesA=ax2,axesB=ax1)
    con.set_linewidth(2)
    con.set_color=([0,0,0])
    ax2.add_artist(con)
    
    #画出下边缘的连线
    x = r*np.cos(np.pi/180*theta1)+center[0]
    y = np.sin(np.pi/180*theta1)+center[1]
    con = ConnectionPatch(xyA=(0,-0.9),xyB=(x,y),
                         coordsA='data', coordsB='data',axesA=ax2,axesB=ax1)
    con.set_linewidth(2)
    con.set_color=([0,0,0])
    ax2.add_artist(con)
    

    在这里插入图片描述参考:python生成复合饼图

    环形图

    加入参数wedgeprops=dict(width=0.3, edgecolor='w')

    a = pe[pe.PID.isin(ksf.PID.drop_duplicates())].性别.value_counts()
    plt.pie(a, labels=a.index, autopct='%.1f%%', colors=['#8ebad9','#f1a4bd'],
           wedgeprops=dict(width=0.3, edgecolor='w'))
    

    在这里插入图片描述

    标签重叠、显示部分标签

    在这里插入图片描述

    方法一:
    1. 参数 explode 部分环块分开
    2. 参数 autopct 只显示百分比大于1%的数据标签
    def my_autopct(pct):
        return ('%.1f%%' % pct) if pct > 1 else ''
    
    plt.pie(a, labels=a.index, explode=[0,0,0.1,0.2,0,0,0,0], colors=colorSeries[a.index], autopct=my_autopct, wedgeprops=dict(width=0.3, edgecolor='w'),pctdistance=0.58)
    plt.title('统一', fontsize=15)
    

    在这里插入图片描述

    方法二:

    调整饼图图表位置

    参数 pctdistance 是数据标签离圆心的距离

    ax2.pie(a, labels=a.index, autopct='%.1f%%',textprops=dict(fontsize=11),
           wedgeprops=dict(width=0.3, edgecolor='w'),pctdistance=0.55)
    

    在这里插入图片描述#### 饼图图标重叠怎么办
    更改位置
    更改前:
    在这里插入图片描述

    更改后:

    在这里插入图片描述

    展开全文
  • python饼图 - 标注标签

    2020-11-23 18:41:15
    我是Python的初学者 .诸如AttributeError之类的错误:'list'对象没有属性'theta2'TypeError:'function'对象不可迭代AttributeError:'numpy.int64'对象没有属性'theta2'这是我的代码:from collections import ...
  • Python饼图绘制

    2020-02-12 19:30:22
    X = [] X.append(above_new_eq5d_index_change_avg) X.append(len(new_eq5d_index_change)-above_new_eq5d_index_change_avg) fig1= pl.subplot(121) X_labels = ['Above average', 'Below averag...
  • 直接使用matplotlib画出的饼图,对于文字较多但是面积较小的类会重叠(我到现在不知道怎么处理这个问题),然后搜到了pyecharts这个库,真香 安装 pip install pyecharts 画图代码 from pyecharts import options ...
  • 主要介绍了基于Python制作美观动态圆环图、饼图,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • python绘制饼图 如果您是视觉学习者,这里是嵌入式视频 饼形图: 饼图是圆形统计图。 整个图表的区域代表100%或全部数据。 饼图中显示的饼图区域代表数据部分的百分比。 饼图的各个部分称为楔形。 ...
  • python饼图字体乱码A pie plot or a pie chart is a circular statistical graphic technique, in which a circle is divided into slices with respect to numerical proportion. In a pie chart, the arc length...
  • 原标题:Python入门进阶:Python绘制饼图到Microsoft Excel来自:Linux迷https://www.linuxmi.com/python-pie-chart-microsoft-excel.html在本文中,我想向您展示使用Python向Microsoft Excel绘制饼图,为此我们将...
  • 解决乱码问题乱码的原因字体的不匹配解决的方法加上引用中文字体就好了matplotlib.rcParams['font.sans-serif'] = ['SimHei']代码def statistic_div_num():mysql=MysqlConnect()chinfo = matplotlib.font_manager....
  • python饼图绘制

    2021-12-30 15:41:18
    import matplotlib.pyplot as plt labels='Frogs','Hogs','Dogs','Logs' sizes=[15,30,45,10] explode=(0,0.01,0,0) plt.pie(sizes,explode,labels,autopct='%1.1f%%',shadow=True,startangle=90) ...
  • 我想在python的piechart上用小尺寸的标签来提高可见性这是密码import matplotlib.pyplot as pltfrac=[1.40 , 10.86 , 19.31 , 4.02 , 1.43 , 2.66 , 4.70 , 0.70 , 0.13 , 1.48, 32.96 , 1.11 , 13.30 , 5.86]labels...
  • 在matplotlib.pyplot 中还有一种图表用于直观表示占比情况的饼图,在matplotlib官网上也列举出非常多关于饼图的案例。 本期,我们将详细学习matplotlib 绘制饼图相关属性的学习,let's go~ 1. 等高线图概述 ...
  • Python画图之饼图

    千次阅读 2020-03-15 00:13:51
    Python画图之饼图 import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = 'SimHei' # 设置中文显示 plt.figure(figsize=(5, 5)) # 将画布设定为正方形,则绘制的饼图是正圆 label = ['否', '是'] # ...
  • Python绘制简单饼图

    2021-11-04 20:24:34
    import matplotlib.pyplot as plt import matplotlib as mpl ...plt.figure(figsize=(6,6))#将画布设定为正方形,则绘制的饼图是正圆 label=['篮球','羽毛球','足球']#定义饼图的名称 explode=[0.01,0.01,0..
  • 在 有奖问答 默认情况下,饼图按值排序,但是,您可以使用标签而不是使用"sort":False进行排序。在 不幸的是,这与您构建图表的方式不符,因为它将采用数据的顺序:即1、10、2、6等,这不是您想要的。在 最好像这样...
  • python绘制饼图The pie chart represents the quantity in percentages, and the total sum of all the segments of the pie chart must be equal to 100%. It is used to visualize the given data in percentage. ...
  • importmatplotlib.pyplot as pltimportmatplotlib as mplmpl.rcParams["font.sans-serif"] = ["SimHei"]mpl.rcParams["axes.unicode_minus"] =Falseelements= ["面粉", "砂糖", "奶油", "草莓酱", "坚果"]weight= ...
  • matplotlib 库除了可以... 推荐好课:Python自动化办公、用Python自动办公做职场高手。1、饼图使用 pie() 方法绘制饼图:importmatplotlib.pyplotaspltprint('\n-----欢迎来到w3cschool.cn')plt.rc('font',family=...
  • Python生成3D图,饼图,合图,散点图,折线图,柱状图
  • 我正在研究Python及其matplotlib库,如何创建以下图表,以便第一个切片从顶部开始并向右(顺时针)而不是向左(逆时针)移动:代码:import matplotlib.pyplot as pltimport reimport math# The slices will be ordered ...
  • python无法显示饼图

    2020-12-14 11:19:21
    首先在终端中查看字体路径 import matplotlib print(matplotlib.matplotlib_fname()) 然后到下载好字体,放到ttf文件夹里面 修改matplotlibrc文件 font.family : sans-serif font.serif :simhei.ttf ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,535
精华内容 6,614
关键字:

python饼图

python 订阅
友情链接: HashCalculator-master.zip