python:数据可视化汇总(一)-matplotlib
仅做整理以及基本用法,没有任何奇淫巧技,没有美观度要求。
import matplotlib.pyplot as plt import pandas as pd
df=pd.read_csv('/home/timo/PycharmProjects/BTC_quant/daily_price_btc.csv') #其实就是上一篇BTC-CNY的数据
1. 折线图
plt.figure(figsize=(16,8)) #定义图的大小 plt.plot(df['volume'],label='line one') #定义数据,可以是一个数据,也可以是两个数据,可以是dataframe或者series格式,也可以是list或者numpy.array格式,label是线对应的名称,当同一图上有多条线时可以用来区分
plt.xlabel("xxx") #所有种类的图都可以添加x、y轴标签和名称,没有也没关系
plt.ylabel("xxx")
plt.title("xxx")
plt.legend()#显示线的label,当有多条折线时,可选择
plt.show() #显示图
plt.plot()内还可以定义一些函数细节,包括线的颜色、线型、标记字符,可以参考此文:plt.plot()函数细节
当你在一个图上画多条折现时,函数会自动分配颜色,可以在plt.plot()里用label=‘xxx’定义线的名称
在同一张图表里绘制两张子图:
plt.subplot(211) #括号里的(mnp):m表示是图排成m行,n表示图排成n列,p表示位置 plt.plot(df['volume']) plt.subplot(212) plt.plot(df['close']) plt.show()
2.点状图
点状图函数内必须有x,y两个参数,函数内也可以定义颜色、标记字符
plt.figure(figsize=(16,8)) plt.scatter(buy_time,buy_dot,c='r') plt.scatter(sell_time,sell_dot,c='k') plt.show()
3.直方图
plt.hist(x, bins= 10, range= None, normed= False, weights= None, cumulative= False, bottom= None, histtype= 'bar', align= 'mid', orientation= 'vertical', rwidth= None, log= False, color= None, label= None, stacked= False)
-
bins:指定直方图条形的个数,默认为10 ;
-
range:指定直方图数据的上下界,默认包含绘图数据的最大值和最小值;
-
normed:是否将直方图的频数转换成频率;默认为0,代表不归一化,显示频数,normed=1,表示归一化,显示频率
-
weights:该参数可为每一个数据点设置权重;
-
cumulative:是否需要计算累计频数或频率;
-
bottom:可以为直方图的每个条形添加基准线,默认为0;
-
histtype:指定直方图的类型,默认为bar,除此还有’barstacked’, ‘step’, ‘stepfilled’;
-
align:设置条形边界值的对其方式,默认为mid,除此还有’left’和’right’;
-
orientation:设置直方图的摆放方向,默认为垂直方向;
-
rwidth:设置直方图条形宽度的百分比;
-
log:是否需要对绘图数据进行log变换;
-
color:设置直方图的填充色;facecolor:长条形的颜色 edgecolor:长条形边框的颜色
-
label:设置直方图的标签,可通过legend展示其图例;
-
stacked:当有多个数据时,是否需要将直方图呈堆叠摆放,默认水平摆放
- alpha:透明度
plt.figure(figsize=(16,8)) plt.hist(df['volume'])
plt.show()
4.k线图
k线图的历史价格data数据列的顺序,从左至右是,开盘,收盘,最高,最低,成交量
import matplotlib as mpl import mpl_finance as mpf
fig,ax=plt.subplots(figsize=(15,6))
fig.subplots_adjust(bottom=0.5)
mpf.candlestick_ochl(ax,data,width=0.6,colorup='r',colordown='g',alpha=1.0) # ax 绘图Axes的实例,data价格历史数据 width 图像中红绿矩形的宽度,代表天数,colorup 收盘价格大于开盘价格时的颜色,colordown 低于开盘价格时矩形的颜色,alpha 矩形的颜色的透明度
# plt.grid(True) 是否显示格子
# plt.title('k线图')
# plt.xlabel('date')
# plt.ylabel('price')
ax.xaxis_date() # x轴的刻度为日期
ax.autoscale_view()
plt.setp(plt.gca().get_xticklabels(),rotation=30)
plt.show()
5.未完待续