Help us understand the problem. What is going on with this article?

面積比がそれっぽいベン図を描いてみた(swift)

More than 1 year has passed since last update.

はじめに

与えられた面積比のベン図を描くこれをみてそんな計算ができるのかと思いそれっぽい面積比のベン図を描いてみました。

そもそもベン図って面積比を気にするようなものではないと思いますが、面積比がそれっぽいベン図っぽいものを描いてみました。

2019/04/21 せっかくなんでswift5.0対応しました
2019/10/16 せっかくなんでSwiftPM対応しました

GitHub

AMVennDiagramView

見た目

スクリーンショット 2018-02-17 18.31.11.png

機能

  • 円の色の設定ができる
  • 円の枠線色の設定ができる
  • 円に表示する文字の設定ができる
  • 円に表示する文字色の設定ができる
  • 円に表示する文字フォントの設定ができる

使い方

  1. 値を設定する

    @IBOutlet weak private var vennDiagramView: AMVennDiagramView!
    
    vennDiagramView.setupVennDiagram(value1: 1000, value2: 500, commonValue: 200)
    vennDiagramView.dataSource = self
    

    値がおかしい場合は図は表示されない。(共通部分がvalue1, value2よりも大きい場合など)

  2. デリゲートを設定する

    /// 円の塗りつぶし色を設定
    func vennDiagramView(_ vennDiagramView:AMVennDiagramView, fillColorForSection section: Int) -> UIColor
    
    /// 円の枠線色を設定
    func vennDiagramView(_ vennDiagramView:AMVennDiagramView, strokeColorForSection section: Int) -> UIColor
    
    /// 円に表示する文字を設定
    func vennDiagramView(_ vennDiagramView:AMVennDiagramView, titleForSection section: Int, value: CGFloat) -> String
    
    /// 円の重なり部分に表示する文字を設定(共通部分がない場合は呼ばれない)
    func titleForCommonArea(in vennDiagramView:AMVennDiagramView, value: CGFloat) -> String
    
    /// 円に表示する文字色を設定
    func vennDiagramView(_ vennDiagramView:AMVennDiagramView, textColorForSection section: Int) -> UIColor
    
    /// 円の重なり部分に表示する文字色を設定
    func textColorForCommonArea(in vennDiagramView:AMVennDiagramView) -> UIColor
    
    /// 円に表示する文字フォントを設定
    func vennDiagramView(_ vennDiagramView:AMVennDiagramView, textFontForSection section: Int) -> UIFont
    
    /// 円の重なり部分に表示する文字フォントを設定
    func textFontForCommonArea(in vennDiagramView:AMVennDiagramView) -> UIFont
    

    sectionはsetupVennDiagram(value1:, value2:, commonValue:)のvalue1が0,value2が1に相当する。

さいごに

計算は少し妥協している点があるので共通部分の面積比に多少ずれがあると思いますが、私にはこれが限界でした。

私はほぼObjective-Cしか使ったことがないペーペーのプログラマーなので記事内容やgithubのコードにおかしなところがあればご指摘いただければ幸いです。

つくったのまとめ

動作確認用にまとめたプロジェクト

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away