2015-08-28 5 views
1

Итак, я обманывал функцию pyopot pie(), и она работает хорошо, и все, за исключением тех случаев, когда я пытаюсь использовать mathtext в обозначении клина (как в методе автообъекта, где Мне нужно число, знак \ pm (+ -) и некоторое соответствующее число). Можно ли это сделать просто? Должен ли я вытащить все объекты клина и манипулировать их текстом (возможно, он является серией объектов Text) или есть более простой способ? Я не против некоторой сложности, мне просто очень хотелось бы сделать это.Matplotlib Pie Chart Mathtext Label/Autopct

редактировать: примером может быть первый пример круговой диаграммы в Matplotlib кода галерея:

import matplotlib.pyplot as plt 


# The slices will be ordered and plotted counter-clockwise. 
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs' 
sizes = [15, 30, 45, 10] 
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral'] 
explode = (0, 0.1, 0, 0) # only "explode" the 2nd slice (i.e. 'Hogs') 

plt.pie(sizes, explode=explode, labels=labels, colors=colors, 
     autopct='%1.1f%%', shadow=True, startangle=90) 
# Set aspect ratio to be equal so that pie is drawn as a circle. 
plt.axis('equal') 

plt.show() 

Идея заключается в том, чтобы иметь номера, сгенерированные в формате autopct ключевого слова, завершившийся с + - и какое-то количество ,

+1

Минимальный пример того, что вы делаете делает вопросы гораздо легче понять/ответ. – tacaswell

ответ

3

Я не уверен, чтобы понять, связана ли ваша проблема с математическим текстом или просто с созданием пользовательской метки. Кроме того, вы не говорите, где вы получаете значение, которое вы хотите поставить после знака ±.

Здесь я предполагаю, что у вас есть список со значением, которое вы хотите добавить для каждого клина.

# The slices will be ordered and plotted counter-clockwise. 
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs' 
sizes = [15, 30, 45, 10] 
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral'] 
explode = (0, 0.1, 0, 0) # only "explode" the 2nd slice (i.e. 'Hogs') 

patches, texts, autotexts = plt.pie(sizes, explode=explode, labels=labels, colors=colors, 
     autopct='%1.1f%%', shadow=True, startangle=90) 
# Set aspect ratio to be equal so that pie is drawn as a circle. 
plt.axis('equal') 


otherInfo = [3, 5, 3, 4] 

for text, info in zip(autotexts, otherInfo): 
    text.set_text(u"%s ± %.1f" % (text.get_text(), info)) #you can play here with the format to get the label that you want 

enter image description here

+0

Ну, я не уточнил достаточно, потому что просто хотел узнать, можно ли это сделать. И это, безусловно, может, понятно. –