将 UIButtons 添加到折线图中的数据点,在 X 轴上绘制日期和时间
Add UIButtons to data points in a line graph, plotting date and time in X-axis
我正在尝试在简单的折线图上绘制一些数据。下面是我用来存储数据的class。
如何用字符串形式的时间或日期绘制 yValue
s?
此外,我想将 title
作为 UIButton
添加到图表中的每个数据点。点击 UIButton
应该显示相应的 detailedNote
是一个小弹出窗口。
我搜索并深入研究了很多图表库 iOS,但没有找到添加这个简单功能的方法。
graph-with-buttons-at-data-points.png
此外,过滤和绘制 "Today"、"Last Week"、"Last Month" 或任何时间间隔的数据的方法是什么?
我可以在没有任何第 3 方 frameworks/libraries 帮助的情况下使用 iOS 库(如 Core Plot 和 UIBeizerPath)完成所有这些吗?
我更喜欢使用 UIBeizerPath,因为我可以平滑图形。
https://medium.com/@ramshandilya/draw-smooth-curves-through-a-set-of-points-in-ios-34f6d73c8f9#.28frf03to
谁能给我指出正确的资源..
非常感谢发布 swift 代码!
class NoteEntry {
var title: String?
var detailedNote: String?
var yValue: Float? = 0
let timeString : String = {
let formatter = NSDateFormatter()
formatter.dateFormat = "h:mm a"
formatter.AMSymbol = "AM"
formatter.PMSymbol = "PM"
return formatter.stringFromDate(NSDate())
}()
let dateString: String = {
let formatter = NSDateFormatter()
formatter.dateFormat = "d"
return formatter.stringFromDate(NSDate())
}()
let dayOfTheWeekString: String = {
let formatter = NSDateFormatter()
formatter.dateFormat = "EEE"
return formatter.stringFromDate(NSDate())
}()
let monthAndYearString: String = {
let formatter = NSDateFormatter()
formatter.dateFormat = ""
return formatter.stringFromDate(NSDate())
}()
}
这里是如何用 SwiftCharts 做到这一点的答案:
如何用字符串形式的时间或日期绘制 yValues?
您必须将字符串转换回日期。否则图表将不知道如何对它们进行排序。我还建议在模型中存储 class 日期而不是字符串。在需要字符串的地方进行格式化,或者至少在单独的(计算的)变量或扩展中进行格式化。关于如何在 SwiftCharts 中制作带有日期的图表,库中有一些示例,只需了解它们即可。
标题作为 UIButton
您可以使用任何类型的 UIView 作为图表点/叠加层等。对于带有标题的行,您将有一个行层和一个添加可点击标题的层,请参见例如NotificationsExample - 这与您想要做的非常接近。它使用 HandlingView
而不是 UIButton
来在闭包中进行点击处理而不是使用选择器。使用选择器,您将失去处理点击的图表点的上下文。
正在为 "today"、"last week" 等过滤数据。
我建议为此打开一个新问题。你不应该把这么多问题捆绑在一起。这也与图表库无关,没有图表库会为您做这件事。你必须使用 NSDateComponents
。也许有一个用于时间操作的库 - 如前所述,这是一个单独的问题。
Core plot 是第三方框架 :) 您当然可以从头开始开发图表,但我建议使用库。对于您的特定情况,SwiftCharts 似乎非常合适,您应该能够使用 NotificationsExample 的修改版本完成图表,以使用日期而不是数字(从其他示例复制日期),并调整可点击的叠加层。
如有更多问题,请随时评论此问题或您在 SwiftCharts 中打开的问题。
(免责声明:我是 SwiftCharts 的作者)。
我正在尝试在简单的折线图上绘制一些数据。下面是我用来存储数据的class。
如何用字符串形式的时间或日期绘制 yValue
s?
此外,我想将 title
作为 UIButton
添加到图表中的每个数据点。点击 UIButton
应该显示相应的 detailedNote
是一个小弹出窗口。
我搜索并深入研究了很多图表库 iOS,但没有找到添加这个简单功能的方法。
graph-with-buttons-at-data-points.png
此外,过滤和绘制 "Today"、"Last Week"、"Last Month" 或任何时间间隔的数据的方法是什么?
我可以在没有任何第 3 方 frameworks/libraries 帮助的情况下使用 iOS 库(如 Core Plot 和 UIBeizerPath)完成所有这些吗? 我更喜欢使用 UIBeizerPath,因为我可以平滑图形。 https://medium.com/@ramshandilya/draw-smooth-curves-through-a-set-of-points-in-ios-34f6d73c8f9#.28frf03to
谁能给我指出正确的资源.. 非常感谢发布 swift 代码!
class NoteEntry {
var title: String?
var detailedNote: String?
var yValue: Float? = 0
let timeString : String = {
let formatter = NSDateFormatter()
formatter.dateFormat = "h:mm a"
formatter.AMSymbol = "AM"
formatter.PMSymbol = "PM"
return formatter.stringFromDate(NSDate())
}()
let dateString: String = {
let formatter = NSDateFormatter()
formatter.dateFormat = "d"
return formatter.stringFromDate(NSDate())
}()
let dayOfTheWeekString: String = {
let formatter = NSDateFormatter()
formatter.dateFormat = "EEE"
return formatter.stringFromDate(NSDate())
}()
let monthAndYearString: String = {
let formatter = NSDateFormatter()
formatter.dateFormat = ""
return formatter.stringFromDate(NSDate())
}()
}
这里是如何用 SwiftCharts 做到这一点的答案:
如何用字符串形式的时间或日期绘制 yValues? 您必须将字符串转换回日期。否则图表将不知道如何对它们进行排序。我还建议在模型中存储 class 日期而不是字符串。在需要字符串的地方进行格式化,或者至少在单独的(计算的)变量或扩展中进行格式化。关于如何在 SwiftCharts 中制作带有日期的图表,库中有一些示例,只需了解它们即可。
标题作为 UIButton 您可以使用任何类型的 UIView 作为图表点/叠加层等。对于带有标题的行,您将有一个行层和一个添加可点击标题的层,请参见例如NotificationsExample - 这与您想要做的非常接近。它使用
HandlingView
而不是UIButton
来在闭包中进行点击处理而不是使用选择器。使用选择器,您将失去处理点击的图表点的上下文。正在为 "today"、"last week" 等过滤数据。 我建议为此打开一个新问题。你不应该把这么多问题捆绑在一起。这也与图表库无关,没有图表库会为您做这件事。你必须使用
NSDateComponents
。也许有一个用于时间操作的库 - 如前所述,这是一个单独的问题。Core plot 是第三方框架 :) 您当然可以从头开始开发图表,但我建议使用库。对于您的特定情况,SwiftCharts 似乎非常合适,您应该能够使用 NotificationsExample 的修改版本完成图表,以使用日期而不是数字(从其他示例复制日期),并调整可点击的叠加层。
如有更多问题,请随时评论此问题或您在 SwiftCharts 中打开的问题。
(免责声明:我是 SwiftCharts 的作者)。