我正在尝试制作散点图并使用列表中的不同数字注释数据点.所以例如我想绘制y vs x并使用n中的相应数字进行注释.
y = [2.56422, 3.77284, 3.52623, 3.51468, 3.02199]
z = [0.15, 0.3, 0.45, 0.6, 0.75]
n = [58, 651, 393, 203, 123]
ax = fig.add_subplot(111)
ax1.scatter(z, y, fmt='o')
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我的例子是:
qplot(mtcars$mpg) + annotate(geom = "text", x = 30, y = 3, label = "Some text\nSome more text")
Run Code Online (Sandbox Code Playgroud)
如何让这里的文字保持对齐?所以'有些人相互排队.
我搜索了几年(小时,就像年龄)找到一个非常讨厌(看似基本)问题的答案,因为我找不到一个非常适合答案的问题,我发布一个问题并回答它,希望它我将花费大量时间用于我的noobie绘图技巧.
如果你想使用python matplotlib标记你的绘图点
from matplotlib import pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
A = anyarray
B = anyotherarray
plt.plot(A,B)
for i,j in zip(A,B):
ax.annotate('%s)' %j, xy=(i,j), xytext=(30,0), textcoords='offset points')
ax.annotate('(%s,' %i, xy=(i,j))
plt.grid()
plt.show()
Run Code Online (Sandbox Code Playgroud)
我知道xytext =(30,0)与textcoords一起使用,你使用那些30,0值来定位数据标签点,所以它在0 y轴上,30在x轴上超过它自己的小区域.
您需要绘制i和j的两条线,否则您只绘制x或y数据标签.
你得到这样的东西(仅注意标签):

它不理想,仍然有一些重叠 - 但它比我所拥有的更好.
我试图在我的图表中停止注释文本重叠.在接受Matplotlib重叠注释的答案中建议的方法看起来非常有希望,但是对于条形图而言.我无法将"轴"方法转换为我想要做的事情,而且我不明白文本是如何排列的.
import sys
import matplotlib.pyplot as plt
# start new plot
plt.clf()
plt.xlabel("Proportional Euclidean Distance")
plt.ylabel("Percentage Timewindows Attended")
plt.title("Test plot")
together = [(0, 1.0, 0.4), (25, 1.0127692669427917, 0.41), (50, 1.016404709797609, 0.41), (75, 1.1043426359673716, 0.42), (100, 1.1610446924342996, 0.44), (125, 1.1685687930691457, 0.43), (150, 1.3486407784550272, 0.45), (250, 1.4013999168008104, 0.45)]
together.sort()
for x,y,z in together:
plt.annotate(str(x), xy=(y, z), size=8)
eucs = [y for (x,y,z) in together]
covers = [z for (x,y,z) in together]
p1 = plt.plot(eucs,covers,color="black", alpha=0.5)
plt.savefig("test.png")
Run Code Online (Sandbox Code Playgroud)
图像(如果有效)可以在这里找到(此代码):

而 …
我试图生成一个图表,我有一些问题注释它.
我的图表在x轴上有一个对数刻度,显示时间.我希望能够做的是将现有(但不可预测)的数字刻度标签保持在100个单位,1000个单位,10000个单位等,还要在x轴上添加自定义刻度标签,以便更清楚"人类"可读的"时间间隔发生 - 例如我希望能够标记'一周','一个月','六个月'等.
我可以使用matplotlib.pyplot.annotate()来标记点,但它并没有真正做我想要的.我真的不想在图表上方放置文字和箭头,我只想添加一些额外的自定义刻度标记.有任何想法吗?
所以我有两个模型,一个排名模型和一个UserRanking模型.该应用程序以人们列出项目并对其进行排名为中心(例如:"2008年最佳电影").排名模型是总排名列表,它是根据人们为该列表创建的所有不同UserRankings计算的.因此,对于每个排名,有一堆不同的UserRankings,每个用户通过提交他们的排名版本的列表给出他/她的意见.UserRanking模型有一个名为"ranking"的ForeignKey字段,它指向Ranking模型.
无论如何,我正在努力收集流行的排名.我的第一步是使用以下代码行获得与他们相关联的大多数UserRankings的排名:
popular = Ranking.objects.all().annotate(num_user_rankings=Count('userranking')).order_by('num_user_rankings')[:50]
Run Code Online (Sandbox Code Playgroud)
但是,Django给了我一个NameError并说:"全局名称'Count'未定义".它没有抱怨注释(只在Django Development版本中可用),这意味着Django开发工作正常吗?"计数"在Django文档中清楚地描述为几个可用作注释arg的聚合函数之一.这绝对没有意义.
事实上,我只是测试了它,并且我能够使用没有参数的注释来显示我的页面,并且它没有给我任何错误(显然我也删除了order_by).因此注释确实有效!
这是一个非常愚蠢的事情,我知道,但我似乎没有得到Django聚合和注释函数的句柄.
我有一个非常简单的模型集:Events,Areas和Types.一个事件有外键指向Area和Type.我只想为任何区域提供即将发生的事件的数量,对于任何类型都是相同的,即Area1-5即将发生的事件,Area2-6或Type1-34事件等等.
我想避免编写自定义SQL,并尽可能使用q运算符.
我已经设法在我的应用程序中实现了一个非常基本的PDF查看器,但是想知道是否可以向PDF添加注释.我查看了SDK文档,但没有找到任何内容.我真的有两个问题:
谢谢.
我在各处搜索了一个答案但找不到任何东西.也许这只是一个愚蠢的问题或一个非常棘手的问题.这里是:
假设我的模型是这个(伪django代码):
Event
type = ForeignKey(EventType)
name = CharField
date_start = DateField
date_end = DateField
EventType
name = CharField
Run Code Online (Sandbox Code Playgroud)
我想知道的是每种事件类型的平均持续时间.我现在所做的是计算创建新事件时的平均持续时间(保存方法)并将其存储在EventType的average_duration列中.这种方法的问题在于我无法回答诸如" 在Y年期间 X型事件的平均持续时间是多少"这样的问题.因此,我不想添加更多列来回答这些问题,而是希望"实时"完成.
这可以通过注释查询集来完成吗?首先,我必须得到每种事件类型的日期差异,然后得出它们的平均值,然后用这个平均值注释事件查询集,我假设.
在下面的设置中,我想要一个带有项目列表的QuerySet,每个项目都注释了所有任务持续时间(作为tasks_duration)的总和以及所有任务的子任务持续时间的总和(asasasks_duration).我的模型(简化)看起来像这样:
class Project(models.Model):
pass
class Task(models.Model):
project = models.ForeignKey(Project)
duration = models.IntegerField(blank=True, null=True)
class SubTask(models.Model):
task = models.ForeignKey(Task)
duration = models.IntegerField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
我像这样制作我的QuerySet:
Projects.objects.annotate(tasks_duration=Sum('task__duration'), subtasks_duration=Sum('task__subtask__duration'))
Run Code Online (Sandbox Code Playgroud)
与Django annotate()中解释的行为相关的多次导致错误的答案我得到的task_duration比它应该高得多.多个annotate(Sum())子句在结果SQL中产生多个左内连接.对于tasks_duration只有一个注释(Sum())项,结果是正确的.但是,我想同时拥有tasks_duration和subtasks_duration.
什么是适合这种查询的方法?我有一个工作解决方案,按项目执行,但预计会非常缓慢.我也有类似的工作与extra()调用,但我真的想知道我想要的纯粹Django是否可能.
annotate ×10
django ×4
matplotlib ×4
python ×4
aggregate ×1
axis-labels ×1
date ×1
ggplot2 ×1
iphone ×1
labels ×1
pdf ×1
r ×1
scatter-plot ×1
sorting ×1
text ×1