Pythonで円と四角を描画する

顕微鏡の視野とTVアダプタレンズの関係を描画するプログラムを作った。

結果

f:id:greenhornprofessional:20200516162955p:plain

プログラム

# 27_FNwithTVlens_001.py
# python 3.8.1
# coding: utf-8

import matplotlib.pyplot as plt
import matplotlib.patches as patches
import numpy as np

#============#
# Parameters #
#============#
W = 6.9
H = 5.2

#=============#
# Draw images #
#=============#

# Field of View
circ22 = patches.Circle(xy=(0, 0), radius=22/2,   ec='black', fill=False)
circ26 = patches.Circle(xy=(0, 0), radius=26.5/2, ec='black', fill=False)

# TV lens 1X
rect = patches.Rectangle((-W/2, -H/2), width=W, height=H, ec='r', fill=False)

# TV lens 0.35X
W035 = W / 0.35
H035 = H / 0.35
rect035 = patches.Rectangle((-W035/2, -H035/2), width=W035, height=H035, ec='b', fill=False)

# TV lens 0.5X
W05 = W / 0.5
H05 = H / 0.5
rect05 = patches.Rectangle((-W05/2, -H05/2), width=W05, height=H05, ec='g', fill=False)

# TV lens 0.65X
W065 = W / 0.65
H065 = H / 0.65
rect065 = patches.Rectangle((-W065/2, -H065/2), width=W065, height=H065, ec='orange', fill=False)

ax = plt.axes() 
ax.add_patch(circ22)
ax.add_patch(circ26)
ax.add_patch(rect)
ax.add_patch(rect035)
ax.add_patch(rect05)
ax.add_patch(rect065)

ax.axis('scaled')
ax.set_xlim(-14, 14)
ax.set_ylim(-14, 14)
ax.set_xticks(np.arange(-14, 14), minor=True)
ax.set_yticks(np.arange(-14, 14), minor=True)
plt.grid(which='both', axis='both', color='gray', alpha=0.3)
plt.show()

Pythonで2つのリスト間の重複要素をとる方法

2つのリストで重複している要素を得る場合、for文とif文で処理していたが、setで簡単にできると知った。

入出力は以下のとおり。

入力:dataset1 = 'abcd' , dataset2 = 'cdefg'
出力:'c', 'd'

プログラムはCase1がfor + if 処理。Case2がsetを利用する場合。
行数は変わらないが、例えば、比較したいリストが3つになった場合、Case2だと & を付け足すだけでリストを追加できる利点がある。

def case1(dataset1, dataset2):
    comp = [letter for letter in dataset1 if letter in dataset2]
    return sorted(comp)

def case2(dataset1, dataset2):
    comp = list(set(dataset1) & set(dataset2))
    return sorted(comp)

if __name__ == "__main__":

    dataset1 = 'abcd'
    dataset2 = 'cdefg'

    print("case1_result ->", case1(dataset1, dataset2))
    print("case2_result ->", case2(dataset1, dataset2))


実行結果は以下のとおり。

case1_result -> ['c', 'd']
case2_result -> ['c', 'd']

Offload

- to give or sell something that you do not need anymore.

The ride-hailing giant said Thursday it is offloading Jump, its bike and scooter business, to Lime, a company in which it is investing $85 million. Jump had been losing about $60 million a quarter.