데이터시각화 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 데이터시각화 1 / 22
학습내용 matplotlib 막대그래프히스토그램선그래프산점도참고 박창이 ( 서울시립대학교통계학과 ) 데이터시각화 2 / 22
matplotlib I 간단한막대그래프, 선그래프, 산점도등을그릴때유용 http://matplotlib.org 에서설치방법참고윈도우의경우명령프롬프트를관리자권한으로실행한후아래의코드실행 python -mpip install -U pip python -mpip install -U matplotlib 박창이 ( 서울시립대학교통계학과 ) 데이터시각화 3 / 22
matplotlib II from matplotlib import pyplot as plt years = [1950, 1960, 1970, 1980, 1990, 2000, 2010] gdp = [300.2, 543.3, 1075.9, 2862.5, 5979.6, 10289.7, 14958.3] plt.plot(years, gdp, color = green, marker = o, linestyle = solid ) plt.title("nominal GDP") plt.ylabel("billions of $") plt.show() 박창이 ( 서울시립대학교통계학과 ) 데이터시각화 4 / 22
matplotlib III 박창이 ( 서울시립대학교통계학과 ) 데이터시각화 5 / 22
막대그래프 I movies = ["Annie Hall", "Ben-Hur", "Casablanca", "Gandhi", "West Side Story"] num_oscars = [5, 11, 3, 8, 10] xs = [i + 0.1 for i, _ in enumerate(movies)] # place the bar at center plt.bar(xs, num_oscars) plt.ylabel("# of Academy Awards") plt.title("my Favoriate Movies") plt.xticks([i + 0.5 for i,_ in enumerate(movies)], movies) # movie titles plt.show() 박창이 ( 서울시립대학교통계학과 ) 데이터시각화 6 / 22
막대그래프 II 박창이 ( 서울시립대학교통계학과 ) 데이터시각화 7 / 22
히스토그램 I from collections import Counter grades = [83,95,91,87,70,0,85,82,100,67,73,77,0] decile = lambda grade: grade // 10 * 10 histogram = Counter(decile(grade) for grade in grades) plt.bar([x - 4 for x in histogram.keys()], # shift each bar to the left by histogram.values(), # give each bar its correct heig 8) # give each bar a width of 8 plt.axis([-5, 105, 0, 5]) # x-axis from -5 to 105, # y-axis from 0 to 5 plt.xticks([10 * i for i in range(11)]) # x-axis labels at 0, 10,..., 1 plt.xlabel("decile") plt.ylabel("# of Students") plt.title("distribution of Exam 1 Grades") plt.show() 박창이 ( 서울시립대학교통계학과 ) 데이터시각화 8 / 22
히스토그램 II 박창이 ( 서울시립대학교통계학과 ) 데이터시각화 9 / 22
선그래프 I variance = [1,2,4,8,16,32,64,128,256] bias_squared = [256,128,64,32,16,8,4,2,1] total_error = [x + y for x, y in zip(variance, bias_squared)] xs = range(len(variance)) # we can make multiple calls to plt.plot # to show multiple series on the same chart plt.plot(xs, variance, g-, label= variance ) # green solid line plt.plot(xs, bias_squared, r-., label= bias^2 ) # red dot-dashed lin plt.plot(xs, total_error, b:, label= total error ) # blue dotted line # because we ve assigned labels to each series # we can get a legend for free # loc=9 means "top center" plt.legend(loc=9) 박창이 ( 서울시립대학교통계학과 ) 데이터시각화 10 / 22
선그래프 II plt.xlabel("model complexity") plt.title("the Bias-Variance Tradeoff") plt.show() 박창이 ( 서울시립대학교통계학과 ) 데이터시각화 11 / 22
선그래프 III 박창이 ( 서울시립대학교통계학과 ) 데이터시각화 12 / 22
산점도 I 예 : 친구수와사이트에머무는시간 friends = [ 70, 65, 72, 63, 71, 64, 60, 64, 67] minutes = [175, 170, 205, 120, 220, 130, 105, 145, 190] labels = [ a, b, c, d, e, f, g, h, i ] plt.scatter(friends, minutes) # label each point for label, friend_count, minute_count in zip(labels, friends, minutes): plt.annotate(label, xy=(friend_count, minute_count), # put the label with xytext=(5, -5), # but slightly offset textcoords= offset points ) plt.title("daily Minutes vs. Number of Friends") plt.xlabel("# of friends") plt.ylabel("daily minutes spent on the site") plt.show() 박창이 ( 서울시립대학교통계학과 ) 데이터시각화 13 / 22
산점도 II 박창이 ( 서울시립대학교통계학과 ) 데이터시각화 14 / 22
산점도 III 축범위자동설정 ( 동일하지않음 ) test_1_grades = [ 99, 90, 85, 97, 80] test_2_grades = [100, 85, 60, 90, 70] plt.scatter(test_1_grades, test_2_grades) plt.title("axes Aren t Comparable") plt.xlabel("test 1 grade") plt.ylabel("test 2 grade") plt.show() 박창이 ( 서울시립대학교통계학과 ) 데이터시각화 15 / 22
산점도 IV 박창이 ( 서울시립대학교통계학과 ) 데이터시각화 16 / 22
산점도 V 축범위동일하게설정 test_1_grades = [ 99, 90, 85, 97, 80] test_2_grades = [100, 85, 60, 90, 70] plt.scatter(test_1_grades, test_2_grades) plt.title("axes Are Comparable") plt.axis("equal") plt.xlabel("test 1 grade") plt.ylabel("test 2 grade") plt.show() 박창이 ( 서울시립대학교통계학과 ) 데이터시각화 17 / 22
산점도 VI 박창이 ( 서울시립대학교통계학과 ) 데이터시각화 18 / 22
다중그래프 I import numpy as np import matplotlib.pyplot as plt from math import pi as pi x = np.linspace(0, 2*pi, 80) y1 = np.sin(x) y2 = np.cos(x) y3 = y1 + y2 y4 = y1 - y2 plt.figure(1) plt.subplot(221) plt.plot(x, y1) plt.title("graph 1") plt.subplot(222) plt.plot(x, y2) plt.title("graph 2") 박창이 ( 서울시립대학교통계학과 ) 데이터시각화 19 / 22
다중그래프 II plt.subplot(223) plt.plot(x, y3) plt.title("graph 3") plt.subplot(224) plt.plot(x, y4) plt.title("graph 4") plt.show() subplot 함수의세숫자는행의수, 열의수, 그림의위치를나타냄 박창이 ( 서울시립대학교통계학과 ) 데이터시각화 20 / 22
다중그래프 III 박창이 ( 서울시립대학교통계학과 ) 데이터시각화 21 / 22
참고 seaborn: matplotlib 의 advanced 라이브러리 Bokeh: 웹에서많이사용되는자바스크립트라이브러리 D3.js 을파이썬에서사용할수있게함 ggplot: R 의 ggplot2 를쓸수있도록한라이브러리 박창이 ( 서울시립대학교통계학과 ) 데이터시각화 22 / 22