python读取mat标注_Python Matplotlib标注

我以前问过下面的问题,但我很难实现代码中提供的示例,以便在“callout”或“Annotation”中获取标签,这样文本就不会重叠。我希望有人能帮助我。这是我之前的问题。

Python PieChart (is it possible to do CallOut labels)

到目前为止,我的代码是:from collections import Counter

import numpy as np

import matplotlib

import matplotlib.pyplot as plt

import pandas as pd

import sqlite3

import os

#Connect to Database

mypath = os.path.abspath(__file__)

conn =sqlite3.connect('C:\inetpub\wwwroot\db\DeviceRegister.sqlite3')

#Connect to the sqlite3 database

cursor = conn.cursor() # Set cursor as the cursor for plus.sqlite

#SQL Query

df = pd.read_sql_query("SELECT devices.id AS id, macs.address AS mac, oses.name AS os, browsers.name AS browser FROM devices JOIN macs ON devices.mac = macs.id JOIN oses ON devices.os = oses.id JOIN browsers ON devices.browser = browsers.id", conn)

df_browsers = df.drop_duplicates(subset=['mac','browser'])

#Get Data

counterbrowsers = Counter(df_browsers['browser'])

browser_names = counterbrowsers.keys()

browser_counts = counterbrowsers.values()

#Pie Chart

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

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.

labels = ['{0} : {1:1}'.format(i,j) for i,j in zip(labels, values)]

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

explode = list()

for k in labels:

explode.append(0.1)

def make_autopct(values):

def my_autopct(pct):

total = sum(values)

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

return '{p:.0f}% ({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))

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

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.savefig(mypath + 'piebrowsers.png')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值