원형 차트의 웨지를 분할하여 연속 링의 웨지당 추가 정보를 표시하려면 어떻게 해야 합니까?

원형 차트의 웨지를 분할하여 연속 링의 웨지당 추가 정보를 표시하려면 어떻게 해야 합니까?

디스크 파티셔닝과 사용 가능한 공간을 계획하고 있습니다.

분할을 보여주는 원형 차트가 있습니다(예: 30% /, 70% ) /home.

/두 번째 링에서는 90%가 채워지고 10%가 /비어 있음 을 보여주고 싶습니다 . 10%는 /home채워져 있고, 90%는 /home비어있습니다.

웨지의 '두 번째' 시리즈를 생성하려면 어떻게 해야 합니까?

LibreOffice, gnuplot, matplotlib 등에서 예를 들어주세요.

이 같은:

여기에 이미지 설명을 입력하세요

답변1

데이터가 다음 형식이라고 가정합니다.

data = {
    # partition: (frac of disk, frac full)
    "/": (0.3, 0.9),
    "/home": (0.7, 0.1),
}

라이브러리를 사용해 보십시오 reportlab.graphics(Ubuntu 및 Fedora 리포지토리에서 사용 가능 python-reportlab).

from reportlab.graphics.shapes import Drawing
from reportlab.graphics.charts.piecharts import Pie
from reportlab.graphics import renderSVG
from itertools import chain
d = Drawing(400, 400)

outerPie = Pie()
outerPie.x = outerPie.y = 0
outerPie.width = outerPie.height = 400
# 2 slices for each sector (used, unused)
outerPie.data = list(chain(*[
    [fracDisk * fracPart, fracDisk * (1 - fracPart)]
    for (fracDisk, fracPart) in data.values()]))
d.add(outerPie, '')

# Draw smaller pie chart on top of outerPie, leaving outerPie as a ring
innerPie = Pie()
innerPie.x = innerPie.y = 100
innerPie.width = innerPie.height = 200
innerPie.data = [t[0] for t in data.values()]
innerPie.labels = list(data)
d.add(innerPie, '')

renderSVG.drawToFile(d, 'chart.svg')

샘플 출력:

차트 출력 샘플

답변2

Mathematica에서도 매우 간단하게 수행할 수 있습니다(Linux 버전에서 테스트됨).

data = {{"/", 0.3, 0.9}, {"/home", 0.7, 0.1}};
PieChart[{
  Labeled[#[[2]], #[[1]]] & /@ data,
  Flatten[{Labeled[#[[2]] *    #[[3]] , "used"], 
           Labeled[#[[2]] * (1-#[[3]]), "free"]} & /@ data]
}, SectorSpacing -> 0]

또는 색상을 일치시키려는 경우:

data = {{"/", 0.3, 0.9, Red}, {"/home", 0.7, 0.1, Blue}};
PieChart[{
  Style[Labeled[#[[2]], #[[1]]], #[[4]]] & /@ data,
  Flatten[{Style[Labeled[#[[2]] *    #[[3]] , "used"], #[[4]]], 
           Style[Labeled[#[[2]] * (1-#[[3]]), "free"], Lighter@#[[4]]]} & /@ data]
}, SectorSpacing -> 0]

파이 차트

관련 정보