目录

一、读取数据

(1)文件中读取数据

(2)代码中直接读取

二、画图

折线图

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

柱状图

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


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

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

一、读取数据

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

(1)文件中读取数据

  • 首先,安装三个模块
pip install xlrd xlwt xltuils
  • 读取数据
import xlwt
import xlrd
from xlutils.copy import copy
from xlrd import open_workbook

data = 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 figures
import matplotlib.pyplot as plt


fig2 = 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和max
plt.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 np
import matplotlib as mpl
#mpl.use("TkAgg") # Use TKAgg to show figures
import 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:为颜色代码

颜色参考链接:颜色参考icon-default.png?t=M3K6https://blog.csdn.net/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也可以直接画图。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐