在很多竞赛中,我们都会看到用python进行作图的部分,这是因为python有一系列强大的可视化和分析工具。比如,matplotlib和pygal都可以绘制图表。
一、matplotlib
导入:import matplotlib.pyplot 或者 from matplotlib import pyplot
折线图:plt.plot(x,y) 散点图:plt.scatter(x,y) 直方图:plt.hist(data,bins=条数)
设置坐标轴标签:plt.xlable("x") plt.ylable("y")
设置图表标题:plt.title("xxx")
展示图表:plt.show()
若要保存为图片则使用:plt.savefig('xxx.png')
调整窗口大小:plt.figure(figsize=(x,y))
给点着色:plt.scatter(c='blue')
渐变色:plt.scatter(c=一个数值,cmap=plt.cm.Greens)
import matplotlib.pyplot as plt
input_values = [1,2,3,4,5]
squares = [1,4,9,16,25]
plt.plot(input_values,squares,linewidth=5)
"""1.1.1 设置标题、坐标轴标签、设置刻度标记大小"""
plt.title("Square Numbers",fontsize = 24)
plt.xlabel("Value",fontsize = 14)
plt.ylabel("Square of Value",fontsize = 14)
plt.tick_params(axis='both',labelsize = 14)
plt.show()
"""1.1.2 散点图"""
x_values = list(range(1,1001))
y_values = [x**2 for x in x_values]
plt.scatter(x_values,y_values,s = 50)
plt.show()
"""1.1.3 自定义颜色、颜色渐变"""
"""要让程序自动将图表保存到文件中,可将对plt.show()的调用替换为对plt.savefig()的
调用"""
plt.scatter(x_values,y_values,c=y_values,cmap=plt.cm.Greens,edgecolors='none',s=100)
plt.savefig('squares_plot.png')
import matplotlib.pyplot as plt
from random_walk import RandomWalk
rw = RandomWalk(50000)
rw.fill_walk()
"""1.2.1 设置窗口大小"""
plt.figure(figsize=(10,6))
"""1.2.2 给点着色"""
point_numbers = list(range(rw.num_points))
plt.scatter(rw.x_values,rw.y_values,edgecolors='none',c=point_numbers,cmap=plt.cm.Reds,s=1)
"""1.2.3 突出起点和终点"""
plt.scatter(0,0,c='green',s=100)
plt.scatter(rw.x_values[-1],rw.y_values[-1],c='blue',s=100)
plt.show()
二、pygal
1.常见图表
线性图:pygal.Line() | 饼图:pygal.Pie() | 漏斗图:pygal.Funnel() |
柱状图:pygal.Bar() | 雷达图:pygal.Radar() | 仪表盘:pygal.SolidGauge() |
XY图:pygal.XY() | 箱型图:pygal.Box() | 树状图:pygal.Treemap() |
散点图(XY图不要连线):pygal.XY(stroke=False) | 点状图:pygal.Dot() | 地图:这个已经改了,应该是在pygal_maps_world.maps中。 |
2.基本规则
以柱状图为例,实例化一个对象Chart = pygal.Bar()
添加表名:Chart.title = 'xxx'
坐标轴标签:Chart.x_title = 'x' Chart.y_title = 'y'
坐标轴指定值:Chart.x_lables = [] #一个列表
添加数值:Chart.add('类别1',[] ) #一个列表
如果是XY图或散点图,在列表里以(x,y)表示每一项
输出图表:Chart.render_to_file('xxx.svg')
import pygal
from die import Die
die = Die()
results = []
"""投掷骰子"""
for roll_num in range(100):
result = die.roll()
results.append(result)
"""计算点数出现的频率"""
frequencies = []
for value in range(1,die.num_sides+1):
frequency = results.count(value)
frequencies.append(frequency)
"""绘制直方图"""
hist = pygal.Bar()
hist.title = "Results of Rolling one D6 100 times."
hist.x_labels = ['1','2','3','4','5','6']
hist.x_title = "Result"
hist.y_title = "Frequency of Result"
hist.add('D6',frequencies)
hist.render_to_file("die_visual.svg")
参考
Python编程:从入门到实践S