python画图[通俗易懂]

python画图[通俗易懂]Matplotlibpython图形可以分为两部分。一个是外部的整体设置,比如坐标轴的设置,注释,透明度等;一个是内部具体图形,不同图形可能大同小异。外部设置,是我们需要掌握的内容。内部具体图形的操作,用的时候搜索下就好。

大家好,又见面了,我是你们的朋友全栈君。

前言

因为数据需要用图形来展示。在Excel,matlab,python中,我选择了python。
数学“剑魔”的的时候,我看到有人用Excel生成柱状图之类的,挺好看,但是我不会啊。matlab以前学过一点,但是当前电脑没有这个软件。安装这个软件有些费事。所以干脆选择使用python生成图形。毕竟学习python相较于学习Excel,相对而言,“性价比”高点。?
我基本不会python,这是第一篇python。
水水,这浪花可这大~

  1. 我目前仅仅需要柱状图.
  2. 视频:Matplotlib Python 画图教程 (莫烦Python)
  3. 代码仓库:Python Matplotlib methods and tutorials

图形可以分为两部分。一个是外部的整体设置,比如坐标轴的设置,注释,透明度等;一个是内部具体图形,不同图形可能大同小异。

外部设置,是我们需要掌握的内容。内部具体图形的操作,用的时候搜索下就好。


环境

vscode的python插件:python 插件
创建一个虚拟环境:虚拟环境和包

一张图一条线

开局,一张图一条线,不好玩,算我输。?

#%%
''' 先来一个最简单:一条线 '''
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1,1,50)
y = 2*x + 1

plt.plot(x,y)
plt.show()

在这里插入图片描述

两张图两条线

# %%
''' 我们可以画到不同图中 '''
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1,1,50)
y1 = 2*x +1
y2 = x**2

plt.figure()
plt.plot(x,y1)

plt.figure(num=3,figsize=(8,5))
plt.plot(x,y2)

plt.show()
python画图[通俗易懂]
python画图[通俗易懂]

一张图两条线:重点

这里是一个重点。

  1. 设置线的样式:颜色、宽度、样式
  2. 显示x轴,y轴的范围
  3. x轴,y轴标签
  4. 更换下标
  5. 移动x,y轴位置
  6. annotation注释
  7. 添加文本
  8. 透明度
  9. 至于添加坐标轴的箭头,我还不知道。
import matplotlib.pyplot as plt
import numpy as np

# 显示中文
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

x = np.linspace(-3,3,50)
y1 = 2*x - 1
y2 = x**2

# 一张图
plt.figure()
plt.plot(x,y1,label='Linear function')
plt.plot(x,y2,label='Quadratic function',color="red",linewidth=1.0,linestyle='--')

# 限制x,y轴的范围,设置标签
plt.xlim((-2,3))
plt.ylim((-2,8))
plt.xlabel("x")
plt.ylabel("y")

# 更换下标
new_ticks = np.linspace(-2,3,10)
plt.xticks(new_ticks)
plt.yticks(range(5), ['cat', 'fish', 'dog$', 'tom', 'jerry'])

# 移动x,y轴位置
# gca = "get current axis"
ax = plt.gca()
ax.spines['right'].set_color('none') # 右边框设置成无颜色
ax.spines['top'].set_color('none') # 上边框设置成无颜色
ax.xaxis.set_ticks_position('bottom') # x轴用下边框代替,默认是这样
ax.yaxis.set_ticks_position('left') # y轴用左边的边框代替,默认是这样
ax.spines['bottom'].set_position(('data',0)) # x轴在y轴,0的位置
ax.spines['left'].set_position(('data',0)) # y轴在x轴,0的位置


# annotation 注释,我们注释在交点
# emm,我手算出来,暂时没考虑样自动计算
# 这个略微有点复杂,用的时候,google下就好
x0 = 1
y0 = 2*x0 -1
plt.scatter(x0,y0,color='green') # 画一个点
plt.plot([x0,x0],[y0,0],color='green',linestyle='--') # 画一条虚线
plt.annotate('intersection is (%d,%d)' % (x0,y0),
                xy=(x0,y0),xytext=(x0+0.5,y0-0.5),xycoords='data',
                arrowprops=dict(arrowstyle='->', connectionstyle="arc3,rad=.2"))

# plt.text(0,-2,'unused text.')

# 设置透明度
# for label in ax.get_xticklabels() + ax.get_yticklabels():
# # label.set_fontsize(16)
# label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.65 ))

plt.legend(loc='best')
plt.show()

在这里插入图片描述

柱状图

注意下,它是如何自动添加lable

import matplotlib.pyplot as plt
import numpy as np

n = 12
X = np.arange(n)
Y1 = (1-X/n)*np.random.uniform(0.5,1.0,n)
Y1 = (1-X/n)*np.random.uniform(0.5,1.0,n)

# 由于返回值,进过提取是str,操作小数位数不方便,外面提前处理好
p1 = plt.bar(X,np.round(Y1,2),width=0.8,facecolor='deeppink',label='uniform')

def autolabel(rects):
    """Attach a text label above each bar in *rects*, displaying its height."""
    for rect in rects:
        height = rect.get_height()
        plt.annotate('{}'.format(height),
                    xy=(rect.get_x() + rect.get_width() / 2, height),
                    xytext=(0, 3),  # 3 points vertical offset
                    textcoords="offset points",
                    ha='center', va='bottom')

# 为什么有两个hight
def add_labels(rects):
    for rect in rects:
        height = rect.get_height()
        plt.text(rect.get_x() + rect.get_width()/2,height,height, ha='center', va='bottom')
        rect.set_edgecolor('white')

# add_labels(p1)

autolabel(p1)

plt.legend(loc='best')
plt.show()   

在这里插入图片描述

散点图

import matplotlib.pyplot as plt
import numpy as np

n = 1024
X = np.random.normal(0,1,1024) # 正态分布
Y = np.random.normal(0,1,1024)
T = np.arctan2(X,Y) # for color

plt.xlim(-1.5,1.5)
plt.ylim(-1.5,1.5)
plt.xticks(())
plt.yticks(())

plt.scatter(X,Y,c=T,alpha=0.65)
plt.show()

在这里插入图片描述

等高线

import matplotlib.pyplot as plt
import numpy as np

def f(x,y):
    # the height function
    return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)

n = 256
x = np.linspace(-3,3,n)
y = np.linspace(-3,3,n)
X,Y = np.meshgrid(x,y)

# use plt.contourf to filling fontous
plt.contourf(X,Y,f(X,Y),8,alpha=0.75,cmap=plt.cm.hot)

# use plt.contour to add contour lines
C = plt.contour(X,Y,f(X,Y),8,color='black',linewidt=0.5)

# add lable
# 这个label比以前的好加
plt.clabel(C,inline=True,fontsize=10)

plt.xticks(())
plt.yticks(())
plt.show()

在这里插入图片描述


图形很多,用的时候,搜索下就好,偷懒 。?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/130432.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【CUDA】cuda安装 (windows版)[通俗易懂]

    【CUDA】cuda安装 (windows版)[通俗易懂]【CUDA】cuda安装(windows版)前言官方教程安装工具的准备CUDAtoolkitDownloadcuDNNDownload2.CUDA安装与配置过程测试环境是否安装成功2、cuDNN配置运行官方自带的demo前言windows10版本安装CUDA,首先需要下载两个安装包CUDAtoolkit(toolkit就是指工具包)cuDNN官方教程CUDA:https://docs.nvidia.com/cuda/cuda-installation-guide-mic

    2022年6月7日
    38
  • 实现PC视频播放最强画质教程( Potplayer播放器+MADVR插件)【转】

    实现PC视频播放最强画质教程( Potplayer播放器+MADVR插件)【转】转自:http://www.hangge.com/blog/cache/detail_1461.html一、MADVR介绍MADVR 是一款超强的视频插件,其配合高清播放软件,可以做到目前 PC 上播放高清视频的最强画质。MADVR 这款视频渲染器比市面上大多数播放器自带的渲染器有着更精确的颜色处理,更高质量的图像缩放缩放、以及更低的颜色错误率。这就使得它所渲染出来的视频在颜色上更…

    2022年9月14日
    0
  • Jmeter之.jtl文件解析「建议收藏」

    Jmeter之.jtl文件解析「建议收藏」我们知道命令行的方式执行完成jmeter后,会生成jtl文件,里面打开后就是一行行的测试结果。<httpSamplet=”1″lt=”1″ts=”1450684950333″s=”true”lb=”app.testdelay”rc=”200″rm=”OK”tn=”appdelay-3000g3m1-1″dt=””by=”2265″/>t表示从请求开始到响应结束…

    2025年7月29日
    2
  • itextpdf生成列表基本用法

    itextpdf生成列表基本用法随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、博主微信(guyun297890152)、QQ技术交流群(183198395)。在上一篇文章使用itextpdf生成表格基本用法中,介绍了生成表格的基本步骤和一些常用设置,同样的,在某些需求下,我们需要在pdf中展示列表,体现条理性,itextpdf同样支持,这个开源库支持很多种列表风格来满足…

    2022年6月22日
    30
  • 国内不用备案的cdn_2018年广电总局电影备案查询

    国内不用备案的cdn_2018年广电总局电影备案查询随着行业老大哥百度云加速的CDN关闭,不,不能说是关闭,是不再面向国外用户(实则是不再面向未备案中国用户),喜欢简单而快捷方式的草根大佬们不知道该何去何从,特别是用习惯了CDN的大佬,更是讨厌裸奔的感觉,没了层CDN,还真就觉得不安全了!事实上,CDN确实让我们的网站加速了不少,当然,排除那些劣质的CDN,有人可能会感觉不用CDN自己的网站反而会快很多,这个是错误的认知,你的网站访问不大的…

    2022年9月10日
    0
  • HTML5学习笔记之History API

    这系列文章主要是学习Html5相关的知识点,以学习API知识点为入口,由浅入深的引入实例,让大家一步一步的体会"h5"能够做什么,以及在实际项目中如何去合理的运用达到使用自如,完美

    2021年12月28日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号