300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 【python画图】使用python画折线图 柱状图

【python画图】使用python画折线图 柱状图

时间:2020-10-31 22:04:10

相关推荐

【python画图】使用python画折线图 柱状图

目录

一、读取数据

(1)文件中读取数据

(2)代码中直接读取

二、画图

折线图

要想指定横纵轴的刻度范围或指定相应取值:(或者X轴不规则增长)

柱状图

其实现在有很多在线网站就可以直接导入数据画图,不需要使用python也可以直接画图。

使用python代码画图主要有两个步骤:

读取数据画图(调整图的布局)

一、读取数据

数据读取有两种方式: 一是从文件中读取(.csv;.xls;.xlsx等);二是直接在代码中赋值

(1)文件中读取数据

首先,安装三个模块

pip install xlrd xlwt xltuils

读取数据

import xlwtimport xlrdfrom xlutils.copy import copyfrom xlrd import open_workbookdata = xlrd.open_workbook('data.xlsx') # 1.读取工作表 修改为自己的数据表的名字table = data.sheet_by_name('one') # 2.读取当前sheet表对象 one为表中sheet的名字 改为自己的rows = table.nrows # 获取行数x_data = []y_data1 = []y_data2 = []y_data3 = []print('一共有{}行数据'.format(rows))for i in range(1,rows):x = table.row_values(i)[3] # 3.读取表中想要的数据列 从0开始排序 3是第四列y1 = table.row_values(i)[4]y2 = table.row_values(i)[5]y3 = table.row_values(i)[6]y_data3.append(y3)# 4.把读取的数据加入到y_data3列表中y_data2.append(y2)y_data1.append(y1)x_data.append(x)

(2)代码中直接读取

直接将对应的X,Y值存在数组中即可

x_data = [1,2,3,4,5,6] y_data = [0.1,0.2,0.3,0.4,0.5,0.6]

二、画图

折线图

import matplotlib as mpl#mpl.use("TkAgg") # Use TKAgg to show figuresimport matplotlib.pyplot as pltfig2 = plt.figure(figsize=(7,5))plt.plot(x_data,y_data,c='g') # 1.过点画线#plt.plot(x_data1,y_data1)# 一个图中要画出多条线的时候,只需要再使用plt.plot画出另一条线即可plt.scatter(x_data , y_data) # 2.画点plt.title('X-Y Test') # 3. 图标题plt.xlabel("X") # 4. X轴名字plt.ylabel("Y") # 5. Y轴名字plt.savefig("test.png")

若想在一个图中同时画出多条折线,只需要再次使用 plt.plot(x,y) 即可

这种方式画出的图如下:

但是,这个图有一个问题,图中的直线穿过散点,看起来并不美观,所以想有没有什么方法可以让

“点覆盖线”呢?

#修改这两句代码,类似于加上点和线的优先级plt.plot(x_data,y_data,zorder=1,c='g') # 1.过点画线plt.scatter(x_data , y_data,zorder=2) # 2.画点

效果如下:

要想指定横纵轴的刻度范围或指定相应取值:(或者X轴不规则增长)

#第一种my_x_ticks = np.arange(6, 38, 2) # 从6到38 间隔2增长(不包括38)plt.xticks(my_x_ticks)#设定x轴plt.yticks(my_x_ticks)#设定y轴#第二种plt.xticks([1,3,4,6,9])#设定x轴#第三种plt.xlim(91,96) #设定x轴取值范围 min和maxplt.ylim(91,96) #设定y轴取值范围 min和max#第四种plt.xscale('symlog') #x轴坐标是以 10^n 为刻度 10,100 ,1000 plt.yscale('symlog') #y轴坐标是以 10^n 为刻度 10,100 ,1000

:一个小插曲,我想要在图中单独标出一个点为不同的颜色(红色),但是最开始想的是用ps修图,但是后来同学说可以在同一个位置输出另一个颜色的点覆盖一下,才恍然大悟!

plt.scatter( [3] ,[0.3], zorder=2 , c='r')

效果如下:

柱状图

以ABC三地 分别有 类别 1 2 3三种商品的数量:

import numpy as npimport matplotlib as mpl#mpl.use("TkAgg") # Use TKAgg to show figuresimport matplotlib.pyplot as plt#A B C 可理解三个地方 每个地点有 类别1 2 3的数据X_label = ["A", "B", "C"]# 1.X轴上的各种选择Value_1 = [1, 4, 7] # 2.类别1 对应的A B C的值Value_2 = [2, 5, 8] # 3.类别2 对应的A B C的值Value_3 = [3, 6, 9] # 4.类别3 对应的A B C的值# 创建分组柱状图,需要自己控制x轴坐标xticks = np.arange(len(X_label))fig, ax = plt.subplots(figsize=(10, 7))#A B C 中x的数量ax.bar(xticks, Value_1, width=0.15, label="1") # 5.width是柱子的宽度ax.bar(xticks + 0.22, Value_2, width=0.15, label="2") # 6.0.22 是调整两个柱之间的距离ax.bar(xticks + 0.44, Value_3, width=0.15, label="3")plt.legend(['1','2','3']) # 7.图例# 最后调整x轴标签的位置ax.set_xticks(xticks + 0.25)ax.set_xticklabels(X_label)plt.title('X-Y Test') # 8. 图标题plt.xlabel("X") # 9. X轴名字plt.ylabel("Y") # 10. Y轴名字plt.savefig("test.png")

效果如下:

另:

想要调整线、点、柱的颜色,只需要在相应的函数内加参数 color=‘ xxx’

xxx:为颜色代码

颜色参考链接:颜色参考/SmallD1018/article/details/121183674?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_antiscanv2&utm_relevant_index=1

其实现在有很多在线网站就可以直接导入数据画图,不需要使用python也可以直接画图。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。