tag:blogger.com,1999:blog-376262672024-03-13T16:03:07.157-07:00画像処理についてあれこれImageMagickをメインに、画像処理についてのTipsを書いていきます。kylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.comBlogger1987125tag:blogger.com,1999:blog-37626267.post-70848041133288783002020-08-05T06:17:00.000-07:002020-08-05T06:17:19.526-07:00JupyterLabとipycanvasで図形に影をつけるipycanvasで図形に影をつける事ができます。影をつけるには、以下の属性でパラメータを設定します。
shadow_color : 影の色
shadow_offset_x : 影の水平方向オフセット
shadow_offset_y : 影の垂直方向オフセット
shadow_blur = ぼかしの大きさ
サンプルコード
以下のサンプルコードは、円の図形と影を描画しています。
from ipycanvas import Canvas
from math import pi
canvas = Canvas(width=200, height=100)
canvas.shadow_color = '#c0c0c0'
canvas.shadow_offset_x = 5
canvas.shadow_offset_y = 5
canvas.shadow_blur = 5
kylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-8300176462898244102020-07-29T01:30:00.001-07:002020-07-29T01:31:02.573-07:00JupyterLabとipycanvasでテキストのアライメントを設定するipycanvasでcanvasを使用して様々な図形を描画する事ができます。
テキストのアライメントを設定するには、text_align属性を使用します。
'start', 'end', 'left, 'right', 'center'が指定できます。
サンプルコード
以下のサンプルコードでは、アライメントを右寄せに設定して文字列を描画しています。
from ipycanvas import Canvas
canvas = Canvas(width=200, height=100)
canvas.fill_style = '#F25E5E'
canvas.font = '32px sanserif'
canvas.text_align = 'right'
canvas.fill_text("テストです", 200, 70)
canvas.stroke_rect(0, 0, 200kylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-44566503912377316962020-07-28T05:43:00.002-07:002020-07-29T01:17:06.146-07:00JupyterLabとipycanvasでテキストを描画するipycanvasでcanvasを使用して様々な図形を描画する事ができます。
テキストを描画する場合は、以下のメソッドを使用します。
・ stroke_text(text, x, y, max_width=None)
指定した文字列textをx, yの座標(テキスト左下位置)に中抜き描画します。max_widthを指定すると超えた場合、指定した幅に圧縮されます。
・ fill_text(text, x, y, max_width=None)
指定した文字列textをx, yの座標(テキスト左下位置)に塗りつぶし描画します。max_widthを指定すると超えた場合、指定した幅に圧縮されます。
font属性でフォントの大きさと種類を指定できます。デフォルトは'12px serif'です。
サンプルコード
以下のサンプルコードで文字列を描画します。
from ipycanvas kylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-69537644895952072462020-07-26T20:32:00.001-07:002020-07-29T01:17:56.489-07:00JupyterLabとipycanvasで二次曲線を描画するipycanvasでcanvasを使用して様々な図形を描画する事ができます。
二次曲線を描画する場合は、以下のメソッドを使用します。
・begin_path()
パスの作成を開始します。
・move_to(x, y)
ペンを指定座標に移動します。
・quadratic_curve_to(cp1x, cp1y, x, y)
二次曲線はパスでの最後の位置から新たな座標(最後の2つの引数x, y)まで、制御点を使って描画します。
・stroke()
パスの設定で線を描画します
サンプルコード
以下のサンプルコードで二次曲線を描画します。
from ipycanvas import Canvas
canvas = Canvas(width=200, height=100)
canvas.stroke_style = '#7799dd'
canvas.begin_path()
kylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-36257576566323406242020-07-26T08:15:00.001-07:002020-07-29T01:17:39.458-07:00JupyterLabとipycanvasでベジェ曲線を描画するipycanvasでcanvasを使用して様々な図形を描画する事ができます。
ベジェ曲線を描画する場合は、以下のメソッドを使用します。
・begin_path()
パスの作成を開始します。
・move_to(x, y)
ペンを指定座標に移動します。
・bezier_curve_to(cp1x, cp1y, cp2x, cp2y, x, y)
ベジェ曲線はパスでの最後の位置から新たな座標(最後の2つの引数x, y)まで、2つの制御点を使って描画します。
・stroke()
パスの設定で線を描画します
サンプルコード
以下のサンプルコードでベジェ曲線を描画します。
from ipycanvas import Canvas
canvas = Canvas(width=200, height=100)
canvas.stroke_style = '#7799dd'
kylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-75912541150651485592020-07-24T09:56:00.001-07:002020-07-24T09:57:08.957-07:00JupyterLabとipycanvasでポリゴンを描画するipycanvasでcanvasを使用して様々な図形を描画する事ができます。
ポリゴンを描画する場合は、以下のメソッドを使用します。
・begin_path()
パスの作成を開始します。
・move_to(x, y)
ペンを指定座標に移動します。
・line_to(x, y)
現在の位置から指定座標に線を引きます。
・ fill(rule='nonzero')
現在のパスの設定で塗りつぶします。
サンプルコード
以下のサンプルコードでポリゴンを描画します。
from ipycanvas import Canvas
canvas = Canvas(width=200, height=100)
canvas.fill_style = '#7799dd'
canvas.begin_path()
canvas.move_to(100,10)
canvas.line_to(kylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-66336313039915292672020-07-24T02:56:00.002-07:002020-07-24T09:57:25.861-07:00JupyterLabとipycanvasで直線を描画するipycanvasでcanvasを使用して様々な図形を描画する事ができます。
直線を描画する場合は、以下のメソッドを使用します。
・begin_path()
パスの作成を開始します。
・move_to(x, y)
ペンを指定座標に移動します。
・line_to(x, y)
現在の位置から指定座標に線を引きます。
・stroke()
パスの設定で線を描画します
〇サンプルコード
以下のサンプルコードで直線を描画します。
from ipycanvas import Canvas
canvas = Canvas(width=200, height=100)
canvas.stroke_style = '#7799dd'
canvas.begin_path()
canvas.move_to(0,100)
canvas.line_to(200,0)
canvas.stroke()
kylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-6981640378594010092020-07-24T02:02:00.003-07:002020-07-24T09:57:53.987-07:00JupyterLabとipycanvasで円・円弧を描画するipycanvasでcanvasを使用して様々な図形を描画する事ができます。
円・円弧を描画する場合は、以下のメソッドを使用します。
・fill_arc(x, y, radius, start_angle, end_angle, anticlockwise=False)
塗りつぶした円・円弧を描画します。
・stroke_arc(x, y, radius, start_angle, end_angle, anticlockwise=False)
円・円弧を線で描画します。
サンプルコード
以下のサンプルコードで円・円弧を描画します。
from ipycanvas import Canvas
from math import pi
canvas = Canvas(width=200, height=100)
canvas.fill_style = 'darkblue'
kylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-28160292830908462972020-07-24T00:24:00.001-07:002020-07-24T00:24:28.606-07:00JupyterLabとipycanvasで四角形を描画するipycanvasでcanvasを使用して様々な図形を描画する事ができます。
四角形を描画する場合は、以下のメソッドを使用します。
・fill_rect(x, y, width, height=None)
塗りつぶした四角形を描画します。
・stroke_rect(x, y, width, height=None)
四角形を線で描画します。
サンプルコード
以下のサンプルコードで四角形を描画します。
from ipycanvas import Canvas
canvas = Canvas(width=200, height=100)
canvas.fill_style = '#335588'
canvas.stroke_style = 'green'
canvas.fill_rect(10, 10, 80, 80)
canvas.stroke_rect(100, 10, 80kylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-44481223908788119982019-06-13T09:04:00.001-07:002019-06-13T09:04:44.265-07:00Pillowを使用して画像を円形に切り取る Pillowを使用して画像を円形に切り取るには、以下のサンプルコードのようにマスクを使用します。
circle-cutting.py
# coding=UTF-8
from PIL import Image
from PIL import ImageDraw
# 画像を円形に切り取る
img1 = Image.open("/tmp/sf.jpg")
img2 = Image.new("RGB", img1.size, (0xbb, 0xdd, 0xff))
mask = Image.new("1", img1.size, 1)
draw = ImageDraw.Draw(mask)
draw.ellipse((0,0,img1.size[0]-1,img1.size[1]-1), fill=0)
del draw
img3 = Image.composite(img2, img1, kylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-81238287888597237782019-06-03T07:17:00.000-07:002019-06-03T07:17:40.824-07:00Pillowを使用して角丸四角を描画するPillowを使用して角丸四角を描画するには、以下のサンプルコードのようにrectangleメソッドとpiesliceメソッドを実行します。
pillow-roundrectangle.py
# coding=UTF-8
from PIL import Image
from PIL import ImageDraw
# 角丸四角を描画する
img1 = Image.new("RGB", (100,100), "#ffffff")
draw = ImageDraw.Draw(img1)
rx = 10
ry = 10
fillcolor = "#bbddff"
draw.rectangle((0,ry)+(img1.size[0]-1,img1.size[1]-1-ry), fill=fillcolor)
draw.rectangle((rx,0)+(img1.size[0]-1-rxkylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-37472530758754045452019-05-30T07:00:00.001-07:002019-05-30T07:00:44.859-07:00Pillowで扇形を描画するPillowで扇形を描画するには、以下のサンプルコードのようにpiesliceメソッドを使用します。
pillow-pie.py
# coding=UTF-8
from PIL import Image
from PIL import ImageDraw
# 扇形を描画する
img1 = Image.new("RGB", (100,100), "#ffffff")
draw = ImageDraw.Draw(img1)
draw.pieslice((10,10)+(89,89), 90, 180, outline="#000000", fill="#bbddff")
del draw
img1.save("/tmp/pillow-pie.png")
出力画像(pillow-pie.png)
kylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-63008941956679007952019-05-28T07:59:00.000-07:002019-05-28T07:59:25.056-07:00Pillowでポリゴンを描画するPillowでポリゴンを描画するには、以下のサンプルコードのようにpolygonメソッドを使用します。
pillow-polygon.py
# coding=UTF-8
from PIL import Image
from PIL import ImageDraw
# ポリゴンを描画する
img1 = Image.new("RGB", (100,100), (0xff, 0xff, 0xff))
draw = ImageDraw.Draw(img1)
draw.polygon((10,10)+(10,89)+(89,10), outline=(0x00, 0x00, 0x00), fill=(0xbb, 0xdd, 0xff))
del draw
img1.save("/tmp/pillow-polygon.png")
〇出力画像(pillow-polygon.png)
〇関連kylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-38915231607876132952019-05-25T19:39:00.001-07:002019-05-25T19:39:54.347-07:00Pillowで円を描画するPillowで円を描画するには、以下のサンプルコードのようにellipseメソッドを使用します。
pillow-ellipse.py
# coding=UTF-8
from PIL import Image
from PIL import ImageDraw
# 円を描画する
img1 = Image.new("RGB", (100,100), (0xff, 0xff, 0xff))
draw = ImageDraw.Draw(img1)
draw.ellipse((0,0,99,99), outline=(0x00, 0x00, 0x00), fill=(0xbb, 0xdd, 0xff))
del draw
img1.save("/tmp/pillow-ellipse.png")
〇出力画像(pillow-ellipse.png)
〇関連情報
・Dockerでkylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-24924644047957371122019-05-25T16:03:00.001-07:002019-05-25T19:30:26.787-07:00Pillowで四角を描画するPillowで四角を描画するには、以下のサンプルコードのようにrectangleメソッドを使用します。
pillow-rectangle.py
# coding=UTF-8
from PIL import Image
from PIL import ImageDraw
# 四角を描画する
img1 = Image.new("RGB", (100,100), (0xff, 0xff, 0xff))
draw = ImageDraw.Draw(img1)
draw.rectangle((10,10,89,89), outline=(0x00, 0x00, 0x00), fill=(0xbb, 0xdd, 0xff))
del draw
img1.save("/tmp/pillow-rectangle.png")
〇出力画像(pillow-rectangle.png)
〇関連情報
・kylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-89214007618184978262019-05-24T09:44:00.000-07:002019-05-24T09:44:03.624-07:00Pillowで直線を描画するPillowで直線を描画するには、以下のサンプルコードのようにlineメソッドを使用します。
pillow-line.py
# coding=UTF-8
from PIL import Image
from PIL import ImageDraw
# 線を引く
img1 = Image.new("RGB", (100,100), (0xff, 0xff, 0xff))
draw = ImageDraw.Draw(img1)
draw.line((0,100)+(100,0), fill=(0xbb, 0xdd, 0xff), width=2)
del draw
img1.save("/tmp/pillow-line.png")
〇出力画像(pillow-line.png)
〇関連情報
・Dockerでpython3.7とPillowをインストールしたコンテナ(kylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-91952234575371305342019-03-23T05:39:00.001-07:002019-03-23T05:39:44.448-07:00JupyterとPygalで軸ラベルを回転させる軸ラベルを回転させるには、以下のサンプルのようにx_label_rotation, y_label_rotationを使用します。
〇サンプルコード
%matplotlib inline
import pandas as pd
import pygal as pg
from pygal.style import Style
style1 = Style(
colors=('#3060ff', '#ff0000', '#00ff00')
)
chart = pg.Bar(x_label_rotation=-45, y_label_rotation=270, height=300, style=style1)
df = pd.DataFrame({'商品A': [10], '商品B':[21], '商品C':[32]})
chart.x_labels = ['Sales']
kylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-50925588252762427942019-03-23T05:28:00.000-07:002019-03-23T05:28:08.576-07:00JupyterとPygalで半メーターグラフを表示する半メーターグラフを表示するには、以下のサンプルのようにSolidGaugeとhalf_pieを使用します。
〇サンプルコード
%matplotlib inline
import pandas as pd
import pygal as pg
from pygal.style import Style
style1 = Style(
colors=('#3060ff', '#ff0000', '#00ff00')
)
chart = pg.SolidGauge(half_pie=True, inner_radius=0.7, height=300, style=style1)
df = pd.DataFrame({'商品A':[55.2], '商品B':[30.4], '商品C':[15.0]})
chart.x_labels = ['percent']
chart.add('商品Akylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-11794345016411695782019-03-23T04:21:00.003-07:002019-03-23T04:21:42.283-07:00JupyterとPygalでメーターグラフを表示するメーターグラフを表示するには、以下のサンプルのようにSolidGaugeを使用します。
〇サンプルコード
%matplotlib inline
import pandas as pd
import pygal as pg
from pygal.style import Style
style1 = Style(
colors=('#3060ff', '#ff0000', '#00ff00')
)
chart = pg.SolidGauge(inner_radius=0.7, height=300, style=style1)
df = pd.DataFrame({'商品A':[55.2], '商品B':[30.4], '商品C':[15.0]})
chart.x_labels = ['percent']
chart.add('商品A', df['商品A'])
chart.add('kylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-59665058058554550632019-03-22T06:39:00.000-07:002019-03-22T06:39:09.677-07:00JupyterとPygalで半円グラフを表示する半円グラフを表示するには、以下のサンプルのようにhalf_pieを使用します。
〇サンプルコード
%matplotlib inline
import pandas as pd
import pygal as pg
from pygal.style import Style
style1 = Style(
colors=('#3060ff', '#ff0000', '#00ff00')
)
chart = pg.Pie(half_pie=True, height=300, style=style1)
df = pd.DataFrame({'商品A':[55], '商品B':[30], '商品C':[15]})
chart.x_labels = ['percent']
chart.add('商品A', df['商品A'])
chart.add('商品B', df['商品B'])
kylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-35073137302207846672019-03-22T06:33:00.000-07:002019-03-22T06:33:16.483-07:00JupyterとPygalで半ドーナツグラフを表示する半ドーナツグラフを表示するには、以下のサンプルのようにhalf_pieとinner_radiusを使用します。
〇サンプルコード
%matplotlib inline
import pandas as pd
import pygal as pg
from pygal.style import Style
style1 = Style(
colors=('#3060ff', '#ff0000', '#00ff00')
)
chart = pg.Pie(half_pie=True,inner_radius=0.6, height=300, style=style1)
df = pd.DataFrame({'商品A':[55], '商品B':[30], '商品C':[15]})
chart.x_labels = ['percent']
chart.add('商品A', df['商品A']kylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-27704792093466709112019-03-22T06:24:00.003-07:002019-03-22T06:24:52.498-07:00JupyterとPygalでドーナツグラフを表示するドーナツグラフを表示するには、以下のサンプルのようにPieとinner_radiusを使用します。
〇サンプルコード
%matplotlib inline
import pandas as pd
import pygal as pg
from pygal.style import Style
style1 = Style(
colors=('#3060ff', '#ff0000', '#00ff00')
)
chart = pg.Pie(inner_radius=0.6, height=300, style=style1)
df = pd.DataFrame({'商品A':[55], '商品B':[30], '商品C':[15]})
chart.x_labels = ['percent']
chart.add('商品A', df['商品A'])
chart.add('商品B', kylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-48169098554587199882019-03-22T06:12:00.000-07:002019-03-22T06:12:13.398-07:00JupyterとPygalで円グラフを表示する円グラフを表示するには、以下のサンプルのようにPieを使用します。
〇サンプルコード
%matplotlib inline
import pandas as pd
import pygal as pg
from pygal.style import Style
style1 = Style(
colors=('#3060ff', '#ff0000', '#00ff00')
)
chart = pg.Pie(height=300, style=style1)
df = pd.DataFrame({'商品A':[55], '商品B':[30], '商品C':[15]})
chart.x_labels = ['percent']
chart.add('商品A', df['商品A'])
chart.add('商品B', df['商品B'])
chart.add('商品C', df['商品Ckylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-24237994056925010172019-03-22T05:57:00.000-07:002019-03-22T05:57:14.243-07:00JupyterとPygalで縦方向の折れ線グラフを表示する縦方向の折れ線グラフを表示するには、以下のサンプルのようにHorizontalLineを使用します。
〇サンプルコード
%matplotlib inline
import pandas as pd
import pygal as pg
from pygal.style import Style
style1 = Style(
colors=('#3060ff', '#ff0000', '#00ff00')
)
chart = pg.HorizontalLine(height=300, style=style1)
df = pd.DataFrame({'商品A': [25, 20, 30], '商品B':[7, 30, 50], '商品C':[12, 40, 80]})
chart.x_labels = ['2017年', '2018年', '2019年']
chart.add('kylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0tag:blogger.com,1999:blog-37626267.post-65522140351488351052019-03-22T05:48:00.003-07:002019-03-22T05:48:44.830-07:00JupyterとPygalで積み上げ折れ線グラフを表示する積み上げ折れ線グラフを表示するには、以下のサンプルのようにStackedLineを使用します。
〇サンプルコード
%matplotlib inline
import pandas as pd
import pygal as pg
from pygal.style import Style
style1 = Style(
colors=('#3060ff', '#ff0000', '#00ff00')
)
chart = pg.StackedLine(height=300, style=style1, fill=True)
df = pd.DataFrame({'商品A': [25, 20, 30], '商品B':[7, 30, 50], '商品C':[12, 40, 80]})
chart.x_labels = ['2017年', '2018年', '2019年']
kylehttp://www.blogger.com/profile/04552840571621538070noreply@blogger.com0