python鼠标移动到某图片上_python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码...

在使用Matplotlib画图过程中,有些内容必须鼠标点击或者划过才可以显示,这个问题可以依赖于annotate(s='str' ,xy=(x,y) ,xytext=(l1,l2) ,..)这个函数,其中s 为注释文本内容 , xy 为被注释的坐标点, xytext 为注释文字的坐标位置,其他参数可自行百度哈。当鼠标滑过时候,将其设置为可见,默认情况下为隐藏。下面是一个小例子:

# -*- coding: UTF-8 -*-

import matplotlib.pyplot as plt

fig = plt.figure()

po_annotation = []

for i in range(0, 10):

x = i

y = x**2

point, = plt.plot(x, y, 'o')

annotation = plt.annotate(('x='+str(x), 'y='+str(y)), xy=(x+0.1, y+0.1), xycoords='data', xytext=(x+0.7, y+0.7),

textcoords='data', horizontalalignment="left",

arrowprops=dict(arrowstyle="simple",connectionstyle="arc3,rad=-0.1"),

bbox=dict(boxstyle="round", facecolor="w",edgecolor="0.5", alpha=0.9)

)

annotation.set_visible(False)

po_annotation.append([point, annotation])

def on_move(event):

visibility_changed = False

for point, annotation in po_annotation:

should_be_visible = (point.contains(event)[0] == True)

# print(point.contains(event)[0])

if should_be_visible != annotation.get_visible():

visibility_changed = True

annotation.set_visible(should_be_visible)

if visibility_changed:

plt.draw()

on_move_id = fig.canvas.mpl_connect('motion_notify_event', on_move)

plt.show()

主要思路为:

•创建[点,注释]对的列表,默认情况下,注释不可见

•每次检测到鼠标移动时,都会注册一个函数“on_move”

•on_move函数遍历每个点和注释,如果鼠标现在位于其中一个点上,则使其关联的注释可见,如果不是,则使其不可见。

运行出来的效果为: 当鼠标滑过时,可以显示其相应坐标:

总结

以上所述是小编给大家介绍的python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

本文标题: python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码

本文地址: http://www.cppcns.com/jiaoben/python/267188.html

好的,我来讲一下如何用 Python 绘制堆叠柱状图。 首先,我们需要导入必要的库,包括 matplotlib 和 numpy。 ```python import matplotlib.pyplot as plt import numpy as np ``` 然后,我们需要准备数据。假设我们有三个类别的数据,每个类别有四个子类别。我们可以用一个二维数组来表示这些数据。 ```python data = np.array([[15, 20, 25, 30], [10, 15, 20, 25], [5, 10, 15, 20]]) ``` 现在,我们可以使用 matplotlib 的 `bar` 函数来绘制堆叠柱状图。我们需要多次调用 `bar` 函数,每次传入一个参数 `bottom` 来指定当前柱状图的底部位置。每个类别的第一个子类别的底部位置都是 0,后面的子类别的底部位置则是前一个子类别的顶部位置。 ```python bottom = np.zeros(len(data[0])) colors = ['r', 'g', 'b'] for i in range(len(data)): plt.bar(range(len(data[i])), data[i], bottom=bottom, color=colors[i]) bottom += data[i] ``` 最后,我们可以添加一些标签和标题来美化图表。 ```python plt.xticks(range(len(data[0])), ['A', 'B', 'C', 'D']) plt.ylabel('Value') plt.title('Stacked Bar Chart') plt.show() ``` 完整的代码如下: ```python import matplotlib.pyplot as plt import numpy as np data = np.array([[15, 20, 25, 30], [10, 15, 20, 25], [5, 10, 15, 20]]) bottom = np.zeros(len(data[0])) colors = ['r', 'g', 'b'] for i in range(len(data)): plt.bar(range(len(data[i])), data[i], bottom=bottom, color=colors[i]) bottom += data[i] plt.xticks(range(len(data[0])), ['A', 'B', 'C', 'D']) plt.ylabel('Value') plt.title('Stacked Bar Chart') plt.show() ``` 运行代码,就可以得到如下的堆叠柱状图: ![stacked_bar_chart.png](https://cdn.jsdelivr.net/gh/wizardforcel/data-science-ipython/images/matplotlib/stacked_bar_chart.png)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值